SQLite Raw-Befehle

  • Hallo zusammen,

    ich habe eine Datenbank inkl GUI erstellt, möchte dort nun eine Art Kommando-Zeile integrieren, in der man eigene SQL-Strings ausführen kann.

    Wie es später in etwa werden soll, kann man z. B. schon im Tool SQLite Database Browser sehen. Dort man kann eigene SQL-Strings ausführen und erhält den Fehlercode (bei erfolgreicher Ausführung dann "No Error") und, sofern gewollt, die Daten zurück.

    Da ich noch SQL-Anfänger bin, weiss ich garnicht, was für unterschiedliche SQL-Strings es überhaupt gibt, wie ich diese unterscheide und entsprechend die Ausgabe vornehme.
    Wenn z. B. ein "Select Count" durchgeführt werden soll, das Ergebnis als Msg-Box zurückgeben, bei Fehlern den Fehlercode, bei "Select OID, Title" soll das ListView aktualisiert werden etc.

    Dazu noch die Frage, wie führe ich die SQL-Strings aus, immer mit _SQLite_Query, brauche ich zusätzlich _SQLite_FetchData ... Fragen über Frage =/

    Ich hoffe das ich mich verständlich ausgedrückt habe und mir jmd helfen kann.

    • Offizieller Beitrag

    Lies dir erst mal diverse Tuts zu SQL durch. Das Basis-Handling ist in allen SQL-Dialekten annähernd gleich.
    Ich verwende inzwischen lieber das FF-AddOn (auch wenn ich den FF sonst nicht verwende) für SQLite zum Bearbeiten von Datenbanken.
    Lad dir das mal und schau es an, das wird schon einige deiner Fragen beantworten und ermöglicht dir gutes Üben.

  • Hi, danke schonmal, wobei, je mehr ich mich grad damit auseinander gesetzt habe, bin ich zu der entscheidung gekommen, dass ich den string einfach auf bestimmte events durchsuche und dann eine vorkonfigurierte ausführung vornehme. ansonsten gibt es wohl keine generelle lösung, wie ich mir die jeweiligen rückgaben anzeigen lassen kann. da die db ja eh beschränkt ist, habe ich es mal so gebastelt:

    [autoit]

    Func _SQLRaw()
    $SqlRawCmd = GUICtrlRead($InputSqlRaw)
    If StringRight($SqlRawCmd, 1) <> ";" Then $SqlRawCmd &= ";"
    Select
    Case StringInStr($SqlRawCmd, "Select Count") or StringInStr($SqlRawCmd, "Select Sum")
    _SQLite_Query(-1, $SqlRawCmd, $hQuery)
    $SqlError = _SQLite_ErrMsg(-1)
    If _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK Then
    MsgBox(64, "SQLRaw", $SqlRawCmd & @CRLF & @CRLF & "Return Code: " & $aRow[0], Default, $GUI)
    Else
    MsgBox(16, "SQLRaw", $SqlRawCmd & @CRLF & @CRLF & "Error Code: " & $SqlError, Default, $GUI)
    EndIf
    Case StringInStr($SqlRawCmd, "Delete")
    _SQLite_Query(-1, $SqlRawCmd, $hQuery)
    $SqlError = _SQLite_ErrMsg(-1)
    If $SqlError = "not an Error" Then
    _SQLite_FetchData($hQuery, $aRow)
    _GUICtrlListView_DeleteAllItems($ListViewHwnd)
    _SQLite_Exec(-1, "Select Title, Rowid From DB Order by Title", "_InsertEntriesIntoListView")
    GUICtrlSetData($InputStatus1, _GUICtrlListView_GetItemCount($ListViewHwnd) & " Items")
    Else
    MsgBox(64, "SQLRaw", $SqlRawCmd & @CRLF & @CRLF & "Error Code: " & $SqlError, Default, $GUI)
    EndIf
    Case StringInStr($SqlRawCmd, "Select Title,")
    _SQLite_Query(-1, $SqlRawCmd, $hQuery)
    $SqlError = _SQLite_ErrMsg(-1)
    If _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK Then
    _GUICtrlListView_DeleteAllItems($ListViewHwnd)
    _SQLite_Exec(-1, $SqlRawCmd, "_InsertEntriesIntoListView")
    GUICtrlSetData($InputStatus1, _GUICtrlListView_GetItemCount($ListViewHwnd) & " Items")
    Else
    MsgBox(16, "SQLRaw", $SqlRawCmd & @CRLF & @CRLF & "Error Code: " & $SqlError, Default, $GUI)
    EndIf
    Case Else
    EndSelect
    EndFunc

    [/autoit]

    für den anfang sollte das reichen ;)