Funktionreferenz


_SQLite_GetTableData2D

Beschreibung anzeigen in

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 )

Parameter

$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)

Rückgabewert

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)

Bemerkungen

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.

Verwandte Funktionen

_SQLite_Display2DResult, _SQLite_Exec, _SQLite_GetTable, _SQLite_GetTable2d, _SQLite_Query

Beispiel

Gibt Daten ohne Kopfzeile zurück

#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()