Функция _SQLite_GetTable2d

 ↑  ←  Описание функции


_SQLite_GetTable2d

Выводит двумерный массив, содержащий имена столбцов и данные выполненного запроса

#include <SQLite.au3>
_SQLite_GetTable2d($hDB, $sSQL, ByRef $aResult, ByRef $iRows, ByRef $iColumns [, $iCharSize = -1 [, $fSwichDimensions = False]])

Параметры

$hDB Дескриптор открытой базы данных, укажите -1 для использования последней открытой базы данных
$sSQL SQL-выражение, которое будет выполнено
$aResult Вывод результата
$iRows Вывод количества строк данных
$iColumns Вывод количества столбцов
$iCharSize [необязательный] Указывает максимальный размер поля данных
$fSwichDimensions [необязательный] Переключатель размерности $aResult

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

Успех:Возвращает $SQLITE_OK
Ошибка:Возвращаемое значение можно сравнить с константами $SQLITE_ *
@error:-1 - SQLite сообщил об ошибке (Проверьте возвращаемое значение)
1 - Ошибка при вызове _SQLite_Query()
2 - Ошибка вызова 'sqlite3_free_table' SQLite API
3 - Вызов предотвращен безопасным режимом
4 - Прекращение, прерывание или @error установлены обратным вызовом (@extended содержит ошибку SQLite)

Примечания

Число значений вставляемых в $aResult будет (($iRows) + 1) * ($iColumns)
Значение NULL будет возвращен как число 0.
Эта функция использует больше памяти, чем _SQlite_Query() / _SQLite_Fetch*()... но она быстрее.
Если вам не нужен результат (или его нет), то рассмотрите возможность использования _SQLite_Exec().

См. также

_SQLite_GetTable, _SQLite_Exec, _SQlite_Query, _SQLite_Display2DResult

Пример

#include <SQLite.au3>
#include <SQLite.dll.au3>

Local $aResult, $iRows, $iColumns, $iRval

_SQLite_Startup()
If @error Then
    MsgBox(16, "Ошибка SQLite", "Не удалось загрузить SQLite3.dll")
    Exit -1
EndIf
ConsoleWrite("Версия библиотеки SQLite = " & _SQLite_LibVersion() & @CRLF)
_SQLite_Open() ; открывает базу данных в памяти
If @error Then
    MsgBox(16, "Ошибка SQLite", "Не удалось загрузить базу данных")
    Exit -1
EndIf

; пример таблицы
;   Имя | Возраст
;   -----------------------
;   Алиса   | 43
;   Андрей  | 28
;   Елена   | 21

If Not _SQLite_Exec(-1, "CREATE TEMP TABLE persons (Имя, Возраст);") = $SQLITE_OK Then _  ; создаёт таблицу "persons"
        MsgBox(16, "Ошибка SQLite", _SQLite_ErrMsg())
If Not _SQLite_Exec(-1, "INSERT INTO persons VALUES ('Алиса','43');") = $SQLITE_OK Then _ ; вставляет значения в таблицу
        MsgBox(16, "Ошибка SQLite", _SQLite_ErrMsg())
If Not _SQLite_Exec(-1, "INSERT INTO persons VALUES ('Андрей','28');") = $SQLITE_OK Then _
        MsgBox(16, "Ошибка SQLite", _SQLite_ErrMsg())
If Not _SQLite_Exec(-1, "INSERT INTO persons VALUES ('Елена','21');") = $SQLITE_OK Then _
        MsgBox(16, "Ошибка SQLite", _SQLite_ErrMsg())

; запрос
$iRval = _SQLite_GetTable2d(-1, "SELECT * FROM persons;", $aResult, $iRows, $iColumns) ; возвращает двумерный массив в $aResult
If $iRval = $SQLITE_OK Then
    ; _SQLite_Display2DResult($aResult) ; выводит результат в консоль
    MsgBox(0, 'Сообщение', _SQLite_Display2DResult($aResult, 0, 1)) ; возвращает результат в строку

;     $aResult выглядит так:
;
;    Имя    Возраст
;    Алиса  43
;    Андрей 28
;    Елена  21
;
;    если переключить размерность в _SQLite_GetTable2d, то результат будет таким:
;
;    Имя  Алиса  Андрей  Елена
;    Возраст   43     28   21

Else
    MsgBox(16, "Ошибка SQLite: " & $iRval, _SQLite_ErrMsg())
EndIf

_SQLite_Close()
_SQLite_Shutdown()