SQLite Frage

  • Hallo,

    ich habe eine SQLite-Datenbank erstellt mit 3 Datensätzen (siehe Anlage) erstellt.

    Dann habe ich folgenden Script verwendet und ich bekomme keine Ausgabe.

    Spoiler anzeigen


    #include <GuiConstants.au3>

    #include "SQLite.au3"

    $datei1 = @ScriptDir & "\adr.sdb"


    GuiCreate("MyGUI", 392, 323,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))


    $Anzeigen = GUICtrlCreateButton("Anzeigen", 200,200,90,20)


    GuiSetState()
    While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop


    Case $msg = $Anzeigen

    $B_Archiv = _DoSQL("SELECT * FROM kd2 ;",$datei1)
    For $i = 1 To $v_name[0][0]
    $inhalt1 = $v_name[$i][0] & "|" & $n_name[$i][1] & "|" & $str[$i][2] & "|" & $h_nr[$i][3] & "|" & $plz[$i][4] & "|" & $ort[$i][5]
    msgbox(1,"test",$inhalt1)
    Next


    Case Else
    ;;;
    EndSelect
    WEnd
    Exit


    ; ---> peethebee (Danke an jonk!)
    Func _DoSQL($_SQL_Code, $cal_filename)
    Dim $ret_array[250][15]
    ; Datenbank initialisieren und öffnen
    _SQLite_Startup (@ScriptDir & "\sqlite3.dll")
    If @error > 0 Then
    MsgBox(0, "Meldung", "SQLite-DLL konnte nicht geladen werden")
    Return 0
    EndIf
    ; hier kann man einen Standardpfad festlegen
    $dbname = $cal_filename
    _sqLiTe_opEn ($dbname)
    If @error > 0 Then
    MsgBox(0, "Meldung", $dbname & " konnte nicht geöffnet werden (Rechte?, Datei in Benutzung?)")
    Return 0
    EndIf
    Dim $hQuery, $aRow
    $iTmp = _SQlite_Query (-1, $_SQL_Code, $hQuery)
    If Not $iTmp = $SQLITE_OK Then
    MsgBox(0, "Meldung", "SQLite-Befehl verursachte einen Fehler: " & $_SQL_Code)
    EndIf
    $num_results = 0
    While _SQLite_FetchData ($hQuery, $aRow) = $SQLITE_OK
    $num_results += 1
    ; Daten in Array kippen und dann zurückgeben (noch nicht getestet)
    For $i = 0 To UBound($aRow) - 1
    $ret_array[$num_results][$i] = $aRow[$i]
    Next
    WEnd
    ; Länge des Ergebnisses erfassen, Ergebnisse ab $ret_array[1]
    $ret_array[0][0] = $num_results
    $ret_array[0][1] = UBound($aRow)
    $iTmp = _SQLite_Close ()
    If Not $iTmp = $SQLITE_OK Then
    MsgBox(0, "Meldung", "Datenbank konnte nicht geschlossen werden.")
    MsgBox(0, "Meldung", "SQLite ErrCode: " & $iTmp)
    MsgBox(0, "Meldung", "SQLite ErrMsg: " & _SQLite_ErrMsg ())
    Return 0
    EndIf
    _SQLite_Shutdown ()
    Return $ret_array
    EndFunc ;==>_DoSQL
    ; <---
    ; --- EOF

    Anlage: Datenbank adr.sdb (gezippt)

    Danke für Hilfe !!!

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hi,
    da ich zu faul bin den Quelltext durchzulesen, habe ich dir mal ein Script von mir gegeben das eine Datenbank ausliest und es in einem Array anzeigt.

    Spoiler anzeigen
    [autoit]


    #include <SQLite.au3>
    #include <array.au3>

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

    ;~ SQLite Variablen
    Dim $hQuery, $aRow, $sMsg
    Dim $sqlit3_dll = @ScriptDir & "\sqlite3.dll" ; Pfad zur sqlite3.dll
    Dim $datenbank = @ScriptDir & "\datenbank.s3db" ; Pfad zur switch.s3db
    Dim $tabelle = "Tabelle"

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

    _SQLite_Startup ($sqlit3_dll)
    If @error > 0 Then
    MsgBoX(0, "Meldung", "SQLite-DLL konnte nicht geladen werden")
    EndIf
    _SQLite_Open ($datenbank)
    If @error > 0 Then
    MsgBoX(0, "Meldung", $datenbank & " konnte nicht geöffnet werden (Rechte?, Datei in Benutzung?)")
    EndIf
    _SQlite_Query (-1, "SELECT * FROM '" &$tabelle "' ;", $hQuery) ; the query
    While _SQLite_FetchData ($hQuery, $aRow) = $SQLITE_OK
    _ArrayDisplay($aRow,"")
    WEnd
    _SQLite_Close()
    _SQLite_Shutdown()

    [/autoit]

    Bei der DLL einfach(TXT) entfernen in das selbe Verzeichnis kopieren und testen.

    MfG
    Der_Doc

  • Hallo Doc.

    Ich habe es soweit geschafft, aber ich bekomme jetzt folgende Fehlermeldung:

    >Running:(3.2.2.0):C:\Programme\AutoIt3\autoit3.exe "E:\test.au3"
    ! SQLite.au3 Error

    --> Function: _SQLite_Query
    --> Query: SELECT * FROM Tabelle
    --> Error: no such table: Tabelle
    +>19:45:03 AutoIT3.exe ended.rc:0
    +>19:45:05 AutoIt3Wrapper Finished
    >Exit code: 0 Time: 3.726

    Habe Als Anlage die Datenbank und das au3 und alles was dazu gehört gesteckt.

    Liebe Grüße, Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    Einmal editiert, zuletzt von Alina (24. April 2007 um 19:59)

  • Zitat

    Original von Alina
    --> Error: no such table: Tabelle


    mhhh wie heißt denn die tabelle...hab zwar mit texteditor die namen der tebllen rauskopiert aber so geht das ganz auhc nicht^^
    ich würde mir die tabellen immer selber erzeugen lassen ist auch net so schwer....

    Spoiler anzeigen
    [autoit]

    #include<SQLite.au3>
    $sql_table = @ScriptDir & "\database.db"
    If (FileExists(@ScriptDIR&"\database.db")=0) Then
    $ret = MsgBox(68,"Daten speichern?","Wollen Sie Daten speichern?")
    Select
    Case $ret = 6 ;Yes
    _DoSQL("CREATE TABLE database (return, name);",$sql_table)
    _DoSQL("INSERT INTO database VALUES ('"&Random(0,100)&"','"&@UserName&"');",$sql_table)
    MsgBox(0,"Operation done.","Your SQLite request has been successful completed.")
    Case $ret = 7 ;No
    Exit
    EndSelect
    EndIf
    $ret = MsgBox(68,"Daten auslesen?","Wollen Sie Daten Auslesen?")
    Select
    Case $ret = 6 ;Yes
    $result = _DoSQL("SELECT * FROM database;",$sql_table)
    For $i = 1 To $result[0][1]
    MsgBox(0,"Operating....","Value:"&$result[$i][1]&@CRLF&"Value2:"&$result[$i][0])
    Next
    MsgBox(0,"Operation done.","Your SQLite request has been successful completed.")
    Case $ret = 7 ;No
    Exit
    EndSelect

    ; ---> peethebee (Danke an jonk!)
    Func _DoSQL($_SQL_Code, $cal_filename)
    Dim $ret_array[250][15]
    ; Datenbank initialisieren und öffnen
    _SQLite_Startup (@ScriptDir & "\sqlite3.dll")
    If @error > 0 Then
    MsgBoX(0, "Meldung", "SQLite-DLL konnte nicht geladen werden")
    Return 0
    EndIf
    ; hier kann man einen Standardpfad festlegen
    $dbname = $cal_filename
    _sqLiTe_opEn ($dbname)
    If @error > 0 Then
    MsgBoX(0, "Meldung", $dbname & " konnte nicht geöffnet werden (Rechte?, Datei in Benutzung?)")
    Return 0
    EndIf
    Dim $hQuery, $aRow
    $iTmp = _SQlite_Query (-1, $_SQL_Code, $hQuery)
    If Not $iTmp = $SQLITE_OK Then
    MsgBoX(0, "Meldung", "SQLite-Befehl verursachte einen Fehler: " & $_SQL_Code)
    EndIf
    $num_results = 0
    While _SQLite_FetchData ($hQuery, $aRow) = $SQLITE_OK
    $num_results += 1
    ; Daten in Array kippen und dann zurückgeben (noch nicht getestet)
    For $i = 0 To UBound($aRow) - 1
    $ret_array[$num_results][$i] = $aRow[$i]
    Next
    WEnd
    ; Länge des Ergebnisses erfassen, Ergebnisse ab $ret_array[1]
    $ret_array[0][0] = $num_results
    $ret_array[0][1] = UBound($aRow)
    $iTmp = _SQLite_Close ()
    If Not $iTmp = $SQLITE_OK Then
    MsgBoX(0, "Meldung", "Datenbank konnte nicht geschlossen werden.")
    MsgBoX(0, "Meldung", "SQLite ErrCode: " & $iTmp)
    MsgBoX(0, "Meldung", "SQLite ErrMsg: " & _SQLite_ErrMsg ())
    Return 0
    EndIf
    _SQLite_Shutdown ()
    Return $ret_array
    EndFunc ;==>_DoSQL

    [/autoit]
  • hallo,

    mein beitrag zu diesem thema möchte ich auch mal los weden. einfache adr-datenbank mit anzeige in einer listview ohne schnick-schnak.

    Spoiler anzeigen
    [autoit]


    Opt("GUIOnEventMode", 0)
    #NoTrayIcon
    #include <GuiListView.au3>
    #include <GUIConstants.au3>
    #include "SQLite.au3"

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

    $datei1 = @ScriptDir & "\adr.db"
    $Form1 = GUICreate("adr-Datenbank", 585, 420, 193, 115)
    $Anzeige = GUICtrlCreateButton("Anzeigen",410, 17, 68, 20)
    $raus = GUICtrlCreateButton("Beenden",510, 17, 68, 20)
    $Tab1 = GUICtrlCreateTab(8, 16, 569, 321)
    ;
    ;--- Ausgabe
    $TabSheet1 = GUICtrlCreateTabItem("Ausgabe")
    $ListView1 = GUICtrlCreateListView("Nummer|Vorname|Nachname|Strasse|Hausnummer|PLZ|Wohnort", 16, 48, 553, 281)
    GUICtrlCreateLabel("Gesamt: ",290, 20, 50, 20)
    $gesamt = GUICtrlCreateLabel("",350, 20, 60, 20)
    ;
    GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Anzeige
    Ausgabe()
    Case $raus
    Exit
    EndSwitch
    WEnd
    ;
    ;--- Ausgabe
    Func Ausgabe()
    _GUICtrlListViewDeleteAllItems($ListView1)
    Local $adr1
    $adr1 = _DoSQL("SELECT * FROM adr;", $datei1)
    For $i = 1 To $adr1[0][0]
    $inhalt1 = $i & "|" & $adr1[$i][1] & "|" & $adr1[$i][2] & "|" & $adr1[$i][3] & "|" & $adr1[$i][4] & "|" & $adr1[$i][5]& "|" & $adr1[$i][6]
    GUICtrlCreateListViewItem($inhalt1, $ListView1)
    Next
    GUICtrlSetData($gesamt,$i -1)
    EndFunc
    ;
    ; peethebee (Danke an jonk!)
    Func _DoSQL($_SQL_Code, $cal_filename)
    Dim $ret_array[250][15]
    ; Datenbank initialisieren und öffnen
    _SQLite_Startup (@ScriptDir & "\sqlite3.dll")
    If @error > 0 Then
    MsgBoX(0, "Meldung", "SQLite-DLL konnte nicht geladen werden")
    Return 0
    EndIf
    ; hier kann man einen Standardpfad festlegen
    $dbname = $cal_filename
    _sqLiTe_opEn ($dbname)
    If @error > 0 Then
    MsgBoX(0, "Meldung", $dbname & " konnte nicht geöffnet werden (Rechte?, Datei in Benutzung?)")
    Return 0
    EndIf
    Dim $hQuery, $aRow
    $iTmp = _SQlite_Query (-1, $_SQL_Code, $hQuery)
    If Not $iTmp = $SQLITE_OK Then
    MsgBoX(0, "Meldung", "SQLite-Befehl verursachte einen Fehler: " & $_SQL_Code)
    EndIf
    $num_results = 0
    While _SQLite_FetchData ($hQuery, $aRow) = $SQLITE_OK
    $num_results += 1
    ; Daten in Array kippen und dann zurückgeben (noch nicht getestet)
    For $i = 0 To UBound($aRow) - 1
    $ret_array[$num_results][$i] = $aRow[$i]
    Next
    WEnd
    ; Länge des Ergebnisses erfassen, Ergebnisse ab $ret_array[1]
    $ret_array[0][0] = $num_results
    $ret_array[0][1] = UBound($aRow)
    $iTmp = _SQLite_Close ()
    If Not $iTmp = $SQLITE_OK Then
    MsgBoX(0, "Meldung", "Datenbank konnte nicht geschlossen werden.")
    MsgBoX(0, "Meldung", "SQLite ErrCode: " & $iTmp)
    MsgBoX(0, "Meldung", "SQLite ErrMsg: " & _SQLite_ErrMsg ())
    Return 0
    EndIf
    _SQLite_Shutdown ()
    Return $ret_array
    EndFunc ;==>_DoSQL

    [/autoit]

    mfg
    trallala

  • Hallo Trallala.

    Habe meinen Fehler gefunden. Ich habe den falschen Namen angegeben. Ich dachte die ganze Zeit, es geht dabei um die Abfrage die in mit SQLite erstellt habe.

    Aber DANK der Hilfe hier hat alles SUPER geklappt.

    Liebe Grüße, Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl