German Hilfe bei SQL benötigt

peternmb

Well-Known Member
Licensed User
Longtime User
Hallo,

ich möchte eine kleine History mit 4 Werten in einer SQL-Datenbank speichern.
Ich bekomme keine Fehlermeldung aber auch keine vernünftige Ausgabe, wo liegt mein Fehler?
B4X:
'Datenbank erzeugen
Try
    SQL1.ExecQuerySingleResult("SELECT count(*) FROM table2")
Catch
    SQL1.ExecNonQuery("CREATE TABLE table2 (H_Datum TEXT,H_Eintrag TEXT,H_State1 TEXT,H_State2 TEXT)")
    SQL1.ExecQuerySingleResult("SELECT count(*) FROM table2")
End Try


'History speichern
Datum=DateTime.Date(DateTime.Now)
Eintrag="Testzeile"
state1="Test-1"
state2_"Test-2"
SQL1.ExecNonQuery2("INSERT INTO table2 VALUES (?, ?, ?, ?)", Array As Object(Datum,Eintrag,state1,state2))   
        
        
'anzeigen       
Dim zeig As ListView
zeig.Initialize("zeig")
zeig.FastScrollEnabled=True
zeig.SingleLineLayout.ItemHeight = 7.8%y
zeig.SingleLineLayout.Label.Color = Colors.Blue
zeig.SingleLineLayout.Label.TextColor = Colors.White
zeig.SingleLineLayout.Label.TextSize = Tsize3
zeig.SingleLineLayout.Label.Gravity = Gravity.CENTER_HORIZONTAL + Gravity.CENTER_VERTICAL
'
TableH.Initialize
statementH="SELECT * FROM table2"
TableH = ExecuteMemoryTable(SQL1,statementH, Null, 0)
'
For i = 0 To TableH.Size - 1
    zeig.AddSingleLine(TableH.Get(0))
    zeig.AddSingleLine(TableH.Get(1))
    zeig.AddSingleLine(TableH.Get(2))
    zeig.AddSingleLine(TableH.Get(2))
Next
 

Alexander Stolte

Expert
Licensed User
Longtime User
Ich bekomme keine Fehlermeldung aber auch keine vernünftige Ausgabe, wo liegt mein Fehler?
SQL1.ExecQuerySingleResult("SELECT count(*) FROM table2")
B4X:
Log(SQL1.ExecQuerySingleResult("SELECT count(*) FROM table2"))
Wo soll er denn auch den Wert ausgeben?
 

DonManfred

Expert
Licensed User
Longtime User
ExecuteMemoryTable
Was macht diese Methode? SCHWER ZU HELFEN mit diesem sehr sehr spärlichen Infos.

Erstelle ein kleines Testprojekt und lade es hoch.
 

peternmb

Well-Known Member
Licensed User
Longtime User
Was macht diese Methode? SCHWER ZU HELFEN mit diesem sehr sehr spärlichen Infos.

Erstelle ein kleines Testprojekt und lade es hoch.
Das Meiste habe ich von einem anderen funktionierenden Projekt übernommen

B4X:
'Executes the query and returns the result as a list of arrays.
'Each item in the list is a strings array.
'StringArgs - Values to replace question marks in the query. Pass Null if not needed.
'Limit - Limits the results. Pass 0 for all results.
Sub ExecuteMemoryTable(SQL As SQL, Query As String, StringArgs() As String, Limit As Int) As List
    Dim cu As Cursor
    If StringArgs <> Null Then
        cu = SQL.ExecQuery2(Query, StringArgs)
    Else
        cu = SQL.ExecQuery(Query)
    End If
    Log("ExecuteMemoryTable: " & Query)
    Dim Table As List
    Table.Initialize
    If Limit > 0 Then Limit = Min(Limit, cu.RowCount) Else Limit = cu.RowCount
    For row = 0 To Limit - 1
        cu.Position = row
        Dim values(cu.ColumnCount) As String
        For col = 0 To cu.ColumnCount - 1
            values(col) = cu.GetString2(col)
        Next
        Table.Add(values)
    Next
    cu.Close
    Return Table
End Sub

Die Daten werden geschrieben, zumindest wird mir die korrekte Anzahl der Datensätze gezeigt.
 
Top