Funktionreferenz


_SQLite_SQLiteExe

Beschreibung anzeigen in

Führt Befehle mit der sqlite3.exe aus

#include <SQLite.au3>
_SQLite_SQLiteExe ( $sDatabaseFile, $sInput, ByRef $sOutput [, $sSQLiteExeFilename = "sqlite3.exe" [, $bDebug = False]] )

Parameter

$sDatabaseFile Dateiname der Datenbank
$sInput Befehle für sqlite3.exe
$sOutput Variable für die (ungefilterten) Ausgaben der sqlite3.exe
$sSQLiteExeFilename [optional] Pfad zur sqlite3.exe
$bDebug [optional] Schreibt den sqlite3.exe exitcode (Schließcode) durch die Callbackfunction (Rückruffunktion), welche in _SQLite_Startup() spezifiziert wurde (Wird standardmäßig nicht ausgegeben)

Rückgabewert

Erfolg: $SQLITE_OK
Fehler: eine Variable welche mit $SQLITE_* Konstanten verglichen werden kann
@error: 1 - Kann keine neue Datenbank anlegen
2 - sqlite3.exe nicht gefunden
3 - SQL-Fehler / SQL-Befehl unvollständig
4 - Kann die Eingabedatei nicht öffnen

Bemerkungen

Um mehr über die sqlite3.exe-Befehle zu erfahren, die sqlite3.exe ausführen, Enter drücken und dann ".Help" eingeben.

Wenn #include <SQLite.dll.au3> enthalten ist, wird die SQLite Version verwendet.
Andere Versionen können unter SQLite Web site gefunden werden.
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.

Beispiel

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

; Dateinamen
Local $sTsvFile = FileGetShortName(_TempFile(@TempDir, "~", ".tsv"))
Local $sDbFile = FileGetShortName(_TempFile(@TempDir, "~", ".db"))

; Erstellt Tsv-Datei
FileWriteLine($sTsvFile, "a" & @TAB & "b" & @TAB & "c")
FileWriteLine($sTsvFile, "a1" & @TAB & "b1" & @TAB & "c1")
FileWriteLine($sTsvFile, "a2" & @TAB & "b2" & @TAB & "c2")

; Import (mittels SQLite3.exe)
Local $sIn, $sOut, $i, $sCreate = "CREATE TABLE TblImport (";
For $i = 1 To _StringCountOccurance(FileReadLine($sTsvFile, 1), @TAB) + 1
    $sCreate &= "Spalte_" & $i & ","
Next
$sCreate = StringTrimRight($sCreate, 1) & ");"
$sIn = $sCreate & @CRLF ; Erstellt Tabelle
$sIn &= ".separator t" & @CRLF ; Wähle @TAB als Separator
$sIn &= ".import '" & $sTsvFile & "' TblImport" & @CRLF
_SQLite_SQLiteExe($sDbFile, $sIn, $sOut, -1, True)

If @error = 0 Then
    ; Zeigt Tabelle (mittels SQLite3.dll)
    Local $iRows, $iColumns, $aRes
    _SQLite_Startup()
    ConsoleWrite("_SQLite_LibVersion=" & _SQLite_LibVersion() & @CRLF)
    _SQLite_Open($sDbFile)
    _SQLite_GetTable2D(-1, "SELECT ROWID,* FROM TblImport;", $aRes, $iRows, $iColumns)
    _SQLite_Display2DResult($aRes) ; Ausgabe in die Konsole
    _SQLite_Close()
    _SQLite_Shutdown()
Else
    If @error = 2 Then
        ConsoleWrite("Fehler: Sqlite3.exe nicht gefunden!" & @CRLF)
    Else
        ConsoleWrite("Fehler: @error=" & @error & " beim Aufruf von _SQLite_SQLiteExe" & @CRLF)
    EndIf
EndIf

; Entferne temporäre Dateien
FileDelete($sTsvFile)
FileDelete($sDbFile)

;~ Ausgabe:
;~  rowid  Spalte_1  Spalte_2  Spalte_3
;~  1      a         b         c
;~  2      a1        b1        c1
;~  3      a2        b2        c2



Func _StringCountOccurance($sSearchString, $sSubString, $iCaseSense = $STR_NOCASESENSE) ; Gibt die Anzahl gefundener $sSubString in $sSearchString zurück
    Local $iOccCnt = 1
    Do
        If StringInStr($sSearchString, $sSubString, $iCaseSense, $iOccCnt) > 0 Then
            $iOccCnt += 1
        Else
            ExitLoop
        EndIf
    Until 0
    Return $iOccCnt - 1
EndFunc   ;==>_StringCountOccurance