SQLite Abfrage erstellen

  • Moin zusammen,

    Ich setz mich im Mom mit dem Thema SQLite auseinander und hab da das Problem, dass ich keine sinnvolle Möglichkeit finde Daten auszulesen. Im Mom mach ich es so:

    Spoiler anzeigen
    [autoit]


    #include <SQLite.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $counter = 0
    Local $aResult, $iRows, $iColumns, $iRval, $test

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _SQLite_Startup()
    _SQLite_Open(@ScriptDir & "\test2.db")
    If @error Then MsgBox(0, "SQL Open", @error)

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 600 To 770
    ToolTip($i)
    $iRval = _SQLite_GetTable(-1, 'SELECT "c" FROM "test" where "a" like "200" and "b" like "' & $i & '";', $aResult, $iRows, $iColumns)

    [/autoit] [autoit][/autoit] [autoit]

    If $iRval = $SQLITE_OK And UBound($aResult) >= 3 Then
    $test &= $aResult[2] & @CRLF
    Else
    $counter = $counter + 1
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0, "SQLite " & $counter, "Durch Abfrage ermittelte Daten: " & @CR & @CR & $test)

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Close(@ScriptDir & "\test2.db")
    _SQLite_Shutdown()

    [/autoit]

    So erstell ich ja immer einen Array und das will ich ja eigentlich nicht. Fakt ist, ich steh da voll auf´m Schlauch. Dauert außerdem ewig die Methode mit dem Array.

    Kann mir einer bitte mal sagen, wie ich eine einfache Abfrage (s. Script) mache ?

    Datenbank kann ich leider nicht hochladen, da größer wie 1,02MB.

    LG
    MrB

    Einmal editiert, zuletzt von MrB (29. April 2011 um 18:59)

  • Uuups, jetzt merk ich mal wieder das ich nur ne 1700 Leitung mit passendem Upload (max. 17KB/s) hab. Datt dauert....

    Die Datei findest du hier.

    Zwar kein FileHoster, aber so gehts auch ^^

    2 Mal editiert, zuletzt von MrB (29. April 2011 um 19:00)

  • Spoiler anzeigen
    [autoit]

    #include <SQLite.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Local $aResult, $iRows, $iColumns, $iRval
    _SQLite_Startup()
    $DB = _SQLite_Open(@ScriptDir & "\test2.db")
    If @error Then MsgBox(0, "SQL Open", @error)

    [/autoit] [autoit][/autoit] [autoit]

    $iRval = _SQLite_GetTable2d(-1, 'SELECT "c" FROM "test" where "a" like "200" and "b" > "599" and "b" < "771";', $aResult, $iRows, $iColumns)

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDisplay($aResult)

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Close($DB)
    _SQLite_Shutdown()

    [/autoit]
  • Thx, das geht schneller ^^

    Nur geht mir da die Zuordnung flöten. Ich müsste als Ausgabe diese Form haben : Spalte1_Spalte2=Spalte3 oder mehr Infos im Array ....

    Irgendwie halt eine Zuordnung zu Spalte 1 und 2.

  • Oh Mann, so einfach....

    Leider nur wenn man´s weis ;)

    Wenn du mir jetzt noch sagst warum folgendes nicht eindeutig ist, sondern immer nur die Spalten einzeln betrachtet werden.

    [autoit]

    $iRval = _SQLite_GetTable2d(-1, 'SELECT a, b, c FROM "test" where "a" > "153" and "a" < "173" and "b" > "475" and "b" < "491";', $aResult, $iRows, $iColumns)

    [/autoit]

    Wie können solche Ergebnisse raus kommen?
    Spalte a=49 Spalte b=476 bzw. Spalte a=154 Spalte b=49

    Hoffe auch, dass es die letzte Frage ist.

    LG
    MrB

  • Der Hinweis hat doch schon gereicht :thumbup:

    Hab´s eben in INTEGER geändert und schwups, es passt.

    Wenn du jetzt noch Ahnung von Arrays bzw. dem Arbeiten damit hast, würd ich mir wünschen du wärst eine Frau :love:

  • *grins* Schade ^^

    Jetzt wird deine Vorstellungskraft gefordert, welche an meinem Erklärungsversuch scheitern wird :

    Stell dir mal folgendes vor

    [autoit]

    $array[250][15]

    [/autoit]


    und den Ergebnisarray ($aResult) aus der SQL Abfrage.
    Ich weis, dass die Werte aus $aResult Spalte a und b irgendwo in $array[?][2] stehen. Allerdings mit einem Zeichen (_) dazwischen (150_300). Jetzt möchte ich gerne den Wert aus $aResult Spalte c an der richtigen Stelle in $array[?][14] einfügen.

    Komme da nur nicht zu einer vernünftigen Lösung

    P.S.: Die Methode mit der For/Next-Schleife (alles miteinander vergleichen) hab ich natürlich. Suche nur etwas nicht ganz so Leistungsintensives

    Einmal editiert, zuletzt von MrB (28. April 2011 um 23:12)

  • Thema Arrays ist erledigt!


    Nur bekomm ich nach dem Compilieren immer eine Fehlermeldung von _SQLite_Open und zwar:


    @error = 1
    @extendend = 21


    21 heist doch Library used incorrectly oder? Wenn ja, dann versteh ichs nicht, da es die selbe DB ist (nur kopiert in einen anderen Ordner), wie vorher. Die Pfade stimmen alle.


    Einer eine Idee?

    Gelöst: #include<SQLite.dll.au3> muss includiert sein, dann gehts auch nachdem kompilieren

    Einmal editiert, zuletzt von MrB (29. April 2011 um 18:58)