Gibt ein 1D Array zurück, welches die Tabellennamen und Daten der ausgeführten SQL-Abfrage beinhaltet
#include <SQLite.au3>
_SQLite_GetTable ( $hDB, $sSQL, ByRef $aResult, ByRef $iRows, ByRef $iColumns [, $iCharSize = -1] )
$hDB | Eine offene Datenbank, mit -1 wird die zuletzt geöffnete Datenbank verwendet |
$sSQL | SQL Anweisung, die ausgeführt werden soll |
$aResult | Gibt das Ergebnis zurück |
$iRows | Gibt die Anzahl an 'Daten' Reihen zurück |
$iColumns | Gibt die Anzahl an Spalten zurück |
$iCharSize | [optional] Legt die maximale Größe eines Datenfeldes fest |
Erfolg: | $SQLITE_OK |
Fehler: | einen Wert, welcher mit $SQLITE_* Konstanten verglichen werden kann. |
@error: | -1 - SQLite meldet einen Fehler (überprüfe Rückgabewert) 1 - Aufruf wurde vom Sicherheitsmodus verhindert 2 - Fehler zurückgegeben durch _SQLite_Query() in @extended 3 - Fehler zurückgegeben durch _SQLite_FetchNames() in @extended 4 - Fehler zurückgegeben durch _SQLite_FetchData() in @extended |
Die SQLite-Dateien können von https://www.autoitscript.com/autoit3/pkgmgr/sqlite heruntergeladen werden. Abgespeichert können diese in @ScriptDir, @SystemDir, @WindowsDir oder @WorkingDir werden.
Die Anzahl an Werten von $aResult ist (($iRows) + 1) * ($iColumns) dieser Wert wird ausgegeben in $aResult[0].
Eine NULL wird als numerische 0 zurückgegeben.
Wenn man kein Ergebnis benötigt (oder wenn es kein Ergebnis gibt) ist es besser _SQLite_Exec() zu verwenden.
_SQLite_Exec, _SQLite_GetTable2d, _SQLite_Query
#include <Array.au3>
#include <MsgBoxConstants.au3>
#include <SQLite.au3>
#include <SQLite.dll.au3>
Local $aResult, $iRows, $iColumns, $iRval
_SQLite_Startup()
If @error Then
MsgBox($MB_SYSTEMMODAL, "SQLite Fehler", "sqlite3.dll konnte nicht geladen werden!")
Exit -1
EndIf
ConsoleWrite("_SQLite_LibVersion=" & _SQLite_LibVersion() & @CRLF)
_SQLite_Open() ; Open a :memory: database
If @error Then
MsgBox($MB_SYSTEMMODAL, "SQLite Fehler", "Datenbank konnten ihct geladen werden!")
Exit -1
EndIf
;; Beispieltabelle
; Name | Age
; -----------------------
; Alice | 43
; Bob | 28
; Cindy | 21
If Not _SQLite_Exec(-1, "CREATE TEMP TABLE persons (Name, Age);") = $SQLITE_OK Then _
MsgBox($MB_SYSTEMMODAL, "SQLite-Fehler", _SQLite_ErrMsg())
If Not _SQLite_Exec(-1, "INSERT INTO persons VALUES ('Alice','43');") = $SQLITE_OK Then _
MsgBox($MB_SYSTEMMODAL, "SQLite-Fehler", _SQLite_ErrMsg())
If Not _SQLite_Exec(-1, "INSERT INTO persons VALUES ('Bob','28');") = $SQLITE_OK Then _
MsgBox($MB_SYSTEMMODAL, "SQLite-Fehler", _SQLite_ErrMsg())
If Not _SQLite_Exec(-1, "INSERT INTO persons VALUES ('Cindy','21');") = $SQLITE_OK Then _
MsgBox($MB_SYSTEMMODAL, "SQLite-Fehler", _SQLite_ErrMsg())
; Abfrage
$iRval = _SQLite_GetTable(-1, "SELECT * FROM persons;", $aResult, $iRows, $iColumns)
If $iRval = $SQLITE_OK Then
;~ $aResult wird so aussehen:
;~ [0] = 8
;~ [1] = Name
;~ [2] = Age
;~ [3] = Alice
;~ [4] = 43
;~ [5] = Bob
;~ [6] = 28
;~ [7] = Cindy
;~ [8] = 21
_ArrayDisplay($aResult, "Abfrageergebnis")
Else
MsgBox($MB_SYSTEMMODAL, "SQLite-Fehler: " & $iRval, _SQLite_ErrMsg())
EndIf
_SQLite_Close()
_SQLite_Shutdown()