German Fehler in SQL-Statement

Anne

Member
Licensed User
Longtime User
Hallo Klaus
Tut mir leid, ich bin's schon wieder, aber ich tappe von Fehler zu Fehler.
Ich habe Dir eine .bmp-Datei hochgeladen, aber ob das gegangen ist, weiss ich nicht. Hier der Teil, der mir Sorgen bereitet:

Query = "SELECT [name] FROM [sqlite_master] WHERE type ='table' "
Cursor = SQL1.ExecQuery(Query)
Dim strTables(Cursor.RowCount-1) As String
For i = 0 To Cursor.RowCount - 1
Cursor.Position = i
strTables(i) = Cursor.getstring("name")
Log (Cursor.getstring("name"))
Next

Jede Datenbank bekommt von SQLite eine Systemtabelle zugeteilt, in der alle Indizes, Views, Tables, etc. aufgelistet sind. Ich habe das mit einem SQLite-Manager getestet und alle meine Versuche mit der Select-Klausel funktionieren einwandfrei.
Nun sind die Feldbezeichnungen nicht gerade günstig gewählt und darum habe ich diesen Kolonnen noch eckige Klammern geschenkt (mit Apostrophen sollte es auch gehen - aber eben) . Darf/kann man nicht auf diese Tabelle zugreifen - natürlich nur readonly? Gibt es eine andere Möglichkeiten alle Tabellennamen einer Datenbank zu ermitteln?

Ich hab's schon mit allen möglichen und unmöglichen Queries probiert, mit Select *, mit einzelnen Kolonnen, mit mehreren Kolonnen, dem Cursor sofort die Query in Klammern mitliefern, mit und ohne WHERE-Klausel, immer enthält der Rowcount nichts Vernünftiges.

Du musst jetzt nicht sofort wieder schreiben, ich weiss, du bist waahnsinnig schnell, aber ich bin vorerst frustiert und setze mich erst morgen wieder an den Compi.

Gruss Anne
 

klaus

Expert
Licensed User
Longtime User
Das funktioniert.
B4X:
' Cursor1 = SQL1.ExecQuery("SELECT name FROM sqlite_master")
Cursor1 = SQL1.ExecQuery("SELECT name FROM sqlite_master WHERE type = 'table'")
For i = 0 To Cursor1.RowCount - 1
    Cursor1.Position = i
    Log(i & " / " & Cursor1.GetString("name"))
Next
Auch mit der ersten auskommentierten Zeile.
Siehe hier.

Beste Grüsse.
 
Last edited:
Top