_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)См. также
_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()