UDF > SQLite >


_SQLite_SQLiteExe

Exécute les commandes dans sqlite3.exe

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

Paramètres

$sDatabaseFile Nom de fichier de la base de données
$sInput Commandes pour sqlite3.exe
$sOutput Paramètre de sortie pour sqlite3.exe
$sSQLiteExeFilename [optionnel] Chemin de sqlite3.exe
$bDebug [optionnel] Ecrit le code de sortie de sqlite3.exe grâce à la fonction de rappel spécifiée dans _SQLite_Startup() (par défaut, ne pas écrire)

Valeur de retour

Succès: Retourne $SQLITE_OK.
Échec: Retourne une valeur qui peut être comparée aux constantes $SQLITE_*.
@error: 1 - Ne peut pas créer de nouvelles bases de données
2 - sqlite3.exe est introuvable
3 - Erreur SQL ou SQL incomplète
4 - Ne peut pas ouvrir le fichier d'entrée

Remarques

Exécutez sqlite3.exe, pressez Enter et tapez .Help pour plus d'informations sur les commandes SQLite3.exe.

Si il ne peut pas être trouvé, sqlite3.exe est téléchargé dans @TempDir.
D'autres versions peuvent être trouvées sur le Site Web SQLite.

Exemple

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

; Les noms de fichiers
Local $sTsvFile = FileGetShortName(_TempFile(@ScriptDir, "~", ".tsv"))
Local $sDbFile = FileGetShortName(_TempFile(@ScriptDir, "~", ".db"))

; Crée Tsv fichier
FileWriteLine($sTsvFile, "a" & @TAB & "b" & @TAB & "c")
FileWriteLine($sTsvFile, "a1" & @TAB & "b1" & @TAB & "c1")
FileWriteLine($sTsvFile, "a2" & @TAB & "b2" & @TAB & "c2")

; Importe (à l'aide SQLite3.exe)
Local $sIn, $sOut, $i, $sCreate = "CREATE TABLE TblImport ("; 
For $i = 1 To _StringCountOccurance(FileReadLine($sTsvFile, 1), @TAB) + 1
    $sCreate &= "Column_" & $i & ","
Next
$sCreate = StringTrimRight($sCreate, 1) & ");"
$sIn = $sCreate & @CRLF ; Créer un tableau
$sIn &= ".separator \t" & @CRLF ; Sélectionnez TAB comme séparateur
$sIn &= ".import '" & $sTsvFile & "'TblImport" & @CRLF
_SQLite_SQLiteExe($sDbFile, $sIn, $sOut, -1, True)

If @error = 0 Then
    ; Voir les tableaux (en utilisant 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) ; Sortie de la console
    _SQLite_Close()
    _SQLite_Shutdown()
Else
    If @error = 2 Then
        ConsoleWrite("ERROR: Sqlite3.exe file not found" & @CRLF)
    Else
        ConsoleWrite("ERROR: @error=" & @error & " when calling _SQLite_SQLiteExe" & @CRLF)
    EndIf
EndIf

; Supprime les fichiers temporaires
FileDelete($sTsvFile)
FileDelete($sDbFile)

; sortie :
; rowid Colonne_1 Column_2 Column_3
; 1 a b c
; 2 a1 b1 c1
; 3 a2 b2 c2

Func _StringCountOccurance($sSearchString, $sSubString, $iCaseSense = $STR_NOCASESENSE)
    ; Retourne le nombre de $sSubString dans $sSearchString
    Local $iOccCnt = 1
    While StringInStr($sSearchString, $sSubString, $iCaseSense, $iOccCnt) > 0
        $iOccCnt += 1
    Wend

    Return $iOccCnt - 1
EndFunc   ;==>_StringCountOccurance