PureBasic

DatabaseQuery()

Синтаксис

Result = DatabaseQuery(#Database , Request$ [, Flags])

Описание


Выполняет SQL-запрос к указанной Базе Данных. Принимаются только запросы, которые не изменяют записи базы данных (запросы типа 'SELECT'). Для выполнения модификации базы данных, используйте функцию DatabaseUpdate().

Параметры

#Database Номер указанной Базы Данных
Request$ SQL-запрос, который требуется выполнить.
Flags (дополн.) Флаги, которые можно использовать. Могут быть одним из следующих значений:
  #PB_Database_StaticCursor : Выполняет запрос для доступа к результату используя последовательный доступ. Не возможно    
                              перематывать позиции с помощью PreviousDatabaseRow() или FirstDatabaseRow() на некоторых драйверах,
                  но это - более быстрый способ получить данные (значение по умолчанию).
  #PB_Database_DynamicCursor: Выполняет запрос для доступа к результату использую случайный доступ к данным PreviousDatabaseRow()  
                              или FirstDatabaseRow(). Это может быть медленнее, или даже не поддерживается на некоторых драйверах.

Возвращаемое значение

Возвращает не нулевое значение, если запрос был выполнен успешно, в противном случае 0, например, если запрос не удачен по причине ошибки SQL или плохо сформированного SQL-запроса.

Комментарии

Если запрос выполнен успешно, то при помощи функции NextDatabaseRow() можно получить листинг записей Базы Данных (см. пример далее). В случае возникновения ошибки, текст с описанием ошибки может быть получен с помощью DatabaseError(). Использовать функцию NextDatabaseRow() безопасно, даже если запрос не возвращает никаких записей. Чтобы получить число столбцов, возвращенных запросом, используйте функцию DatabaseColumns().

Когда результаты запроса станут больше не нужны, необходимо вызвать функцию FinishDatabaseQuery(), чтобы высвободить все ресурсы связанные с запросом.

Запрос может содержать подставляемые метки - указатели для связанных переменных. Такие переменные должны быть заданы до вызова функции, с помощью команд SetDatabaseString(), SetDatabaseLong() и т.д. После выполнения запроса связанные переменные очищаются и для будущих вызовов должны быть заданы снова. Синтаксис для определения связанных переменных в SQL зависит от базы данных. Пример ниже демонстрирует синтаксис.

Пример

; Во-первых, откройте базу данных (создайте соединение) со списком сотрудников
;
If DatabaseQuery(#Database, "SELECT * FROM employee") ; Получите все записи в таблице 'сотрудники'

    While NextDatabaseRow(#Database) ; Цикл для каждой записи
        Debug GetDatabaseString(#Database, 0) ; Отображение содержимого первого поля
    Wend

    FinishDatabaseQuery(#Database)
EndIf

Пример: Связывание переменных с SQLite, MySQL и ODBC

; SQLite, MySQL и ODBC используют один и тот же синтаксис для связанных переменных.
; Подставляемым в запрос к базе данных указателем на связанную переменную является символ '?'.
SetDatabaseString(#Database, 0, "test")
If DatabaseQuery(#Database, "SELECT * FROM employee WHERE id=?")
    ; ...
EndIf

Пример: PostgreSQL

; PostgreSQL использует другой синтаксис: символы $ 1, $ 2... вместо символа '?', в запросе к базе данных.
;
SetDatabaseString(#Database, 0, "test")
If DatabaseQuery(#Database, "SELECT * FROM employee WHERE id=$1")
    ; ...
EndIf

См. также

DatabaseUpdate(), NextDatabaseRow() SetDatabaseString(), SetDatabaseLong(), SetDatabaseQuad(), SetDatabaseFloat(), SetDatabaseDouble() SetDatabaseBlob(), SetDatabaseNull()

Поддерживаемые OS

Все

<- DatabaseID() - Оглавление Database - DatabaseUpdate()->