Gibt ein 2D Array zurück, welches die Daten der ausgeführten SQL-Abfrage beinhaltet
#include <SQLite.au3>
_SQLite_GetTableData2D ( $hDB, $sSQL, ByRef $aResult, ByRef $iRows, ByRef $aNames )
| $hDB | Eine offene Datenbank, mit -1 wird die zuletzt geöffnete Datenbank verwendet |
| $sSQL | SQL Befehl der ausgeführt werden soll |
| $aResult | Enthält das Ergebnis des SQL-Befehls (siehe Remarks wie Datenzeilen ohne Kopfzeile (Header) zurückgegeben werden) |
| $iRows | Enthält die Anzahl der Daten-Zeilen |
| $aNames | Enthält einen Array mit den Spaltennamen (Header) |
| Erfolg: | $SQLITE_OK. |
| Fehler: | ein Wert, der einer der $SQLITE_*-Konstanten entspricht |
| @error: | -1 - SQLite meldete einen Fehler (Es ist der Rückgabewert der Funktion zu prüfen) 1 - Fehler beim Aufruf von _SQLite_Query() 2 - Fehler beim Aufruf des SQLite API 'sqlite3_free_table' 3 - Aufruf wurde durch SafeMode verhindert 4 - Abbruch, Unterbrechung oder @error durch Callback gesetzt (@extended auf SQLite-Fehler gesetzt) |
Die Anzahl der Werte, die in $aResult eingefügt wurden, berechnet sich aus $iRows * UBound($aResult, 2).
NULL wird als numerisch 0 zurückgegeben.
Diese Funktion benötigt mehr Speicher als _SQLite_Query() / _SQLite_Fetch*()... aber sie ist schneller.
Wenn man kein Ergebnis benötigt (oder wenn es keines geben wird), sollte man SQLite_Exec() verwenden.
_SQLite_Display2DResult, _SQLite_Exec, _SQLite_GetTable, _SQLite_GetTable2d, _SQLite_Query
#include <MsgBoxConstants.au3> #include <SQLite.au3> #include <SQLite.dll.au3> Local $aResult, $iRows, $aNames, $iRval _SQLite_Startup() If @error Then MsgBox($MB_SYSTEMMODAL, "SQLite Fehler", "SQLite3.dll kann nicht geladen werden!") Exit -1 EndIf ConsoleWrite("_SQLite_LibVersion=" & _SQLite_LibVersion() & @CRLF) _SQLite_Open() ; Öffnet eine :memory: Datenbank If @error Then MsgBox($MB_SYSTEMMODAL, "SQLite Fehler", "Kann die Datenbank nicht laden!") Exit -1 EndIf ; Beispiel Tabelle ; Name | Alter ; ----------------------- ; 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()) $iRval = _SQLite_GetTableData2D(-1, "SELECT * FROM persons;", $aResult, $iRows, $aNames) If $iRval = $SQLITE_OK Then _SQLite_Display2DResult($aResult) ; $aResult sieht so aus: ; Alice 43 ; Bob 28 ; Cindy 21 Else MsgBox($MB_SYSTEMMODAL, "SQLite Fehler: " & $iRval, _SQLite_ErrMsg()) EndIf _SQLite_Close() _SQLite_Shutdown()