[How-To] Mit SQLite arbeiten

  • Hi,

    wenn man sich in AutoIT so etwas wie ein resource File wünscht, dann ist eine DB momentan die beste und einfachste Lösung.

    Und die DB Engine, die im AutoIT Pack als UDF integriert ist, hat eine extrem leichte Handhabung.

    Man kann DB Dateien erstellen, diese werden dann im angegebenen Pfad erstellt und wenn sie schon existieren, dann werden sie geöffnet und man kann auf sie zugreifen.

    Aber man braucht dazu die SQLite UDF und die SQLite.dll .
    Die mitgegebene UDF enthält bereits alle nötigen Funktionen, und die DLL wird auf Wunsch automatisch erzeugt.

    C
    #include <SQLite.au3> ;; Die UDF
    #include <SQLite.dll.au3> ;; Die DLL, sie wird automatisch abgespeichert

    Nachdem includen der ganzen Sachen muss die DLL ja geöffnet werden usw.
    Dazu wird folgendes gemacht :

    Code
    _SQLite_StartUp()

    Danach öffnen wir eine DB (falls die angegebene Datei nicht existiert wird sie erstellt)

    Code
    $hDB = _SQLite_Open("DB.db")


    [COLOR="PaleTurquoise"]Nun wird die Datei "DB.db" im Momentanen Ordner erstellt.
    Man kann das ganze auch ohne eine Datei zu benutzen machen.
    Nur wird dann auch nichts gespeichert.[/COLOR]

    Code
    $hDB = _SQLite_Open(":memory:")
    ;; oder einfach
    $hDB = _SQLite_Open ()


    [COLOR="PaleTurquoise"]Nun nachdem die DB erstellt wurde kann man mithilfe der UDF und der DLL auf sie zugreifen.[/COLOR]

    Als Beispiel erstellen wir mal eine Tabelle :

    Code
    _SQLite_Exec ($hDB, "CREATE TABLE Tabelle (Row1,Row2,Row3);")


    [COLOR="PaleTurquoise"]Anstatt "$hDB" kann man auch einfach "-1" verwenden, dabei wird die als letzte geöffnete DB verwendet.[/COLOR]

    Nun wo eine Tabelle existiert kann auch etwas eingetragen werden.

    Code
    _SQLite_Exec ($hDB, "INSERT INTO Tabelle (Row1,Row2,Row3) VALUES ('(C)','by','*electriZer*');")


    [COLOR="PaleTurquoise"]_SQLite_Exec() kann man dazu verwenden um neue Daten anzulegen, zum Auslesen wäre _SQLite_Query() vorteilhafter, da bei _SQLite_Exec() keine Rückgabe erfolgt.[/COLOR]

    Damit hätten wir den ersten Eintrag,
    um den wieder auszulesen, damit das ganze auch seinen Sinn hat,
    müssen wir folgendes tun :

    Code
    Local $hQuery,$aRow
    _SQLite_Query($hDB, "SELECT * From Tabelle",$hQuery)


    [COLOR="PaleTurquoise"]Ihr seht hier schon eine Variable die gar nicht deklariert wird ($hQuery).
    Die Funktion ist so aufgebaut das man nicht alles selber deklarieren muss ($x=0), sondern, dass das die Funktion übernimmt.
    Man gibt den Namen der Variable an und die Funktion speichert die Rückgabe dort hinein.
    Aber damit der Compiler keine Probleme macht, dass $hQuery nicht deklariert sei. Wurde $hQuery hier mit "Local" als eine Local Variable deklariert ("Local" ist auch so etwas wie "Global"). Und $aRow wird für die folgende Funktion benötigt, der Grund der Deklaration ist der gleiche wie bei $hQuery.[/COLOR]

    Weiter gehts, das war nicht alles:

    Code
    _SQLite_FetchData ($hQuery, $aRow)
    MsgBox(0x40,"[INFO]",$aRow[0]&" "&$aRow[1]&" "&$aRow[2])


    Und schon wird euch in einer MsgBox der Inhalt in der Tabelle angegeben.

    Aber jetzt muss die DB und die DLL noch geschlossen werden.

    Code
    _SQLite_Close($hDB)
    _SQLite_Shutdown()

    Um noch mehr mit SQLite anzufangen als eine kleine Tabelle mit 3 Spalten zu erstellen und auszulesen, solltet ihr SQL lernen.
    Und wer schon mit MySQL gearbeitet hat kann auch mit SQLite arbeiten.
    (PS : SQLite kann man auch in PHP verwenden)

    Den gesamten Code müsst ihr euch dann mal selber zusammensuchen =)
    Und die SQLite UDF hat noch ein paar Funktionen mehr auf Lager.

    [SIZE="3"](C) by Jiyan Akgül
    Dieses Tutorial ist Urheberrechtlich geschützt,
    das Kopieren ohne Erlaubnis sowie Fälschung des Urheber Namens macht sie Strafbar.[/SIZE]

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!