SQLite - Fließkommazahlen speichern und auslesen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    SQLite - Fließkommazahlen speichern und auslesen

    Guten Abend,

    ich habe ein kleines Problem mit dem Speichern bzw. Auslesen von Fließkommazahlen aus einer SQLite-Datenbank.
    Wenn ich eine Fließkommazahl in die Datenbank speichern und anschließend wieder lade, werden mir nur die Zahlen vor dem Komma ausgegeben.
    Ich habe herausgefunden, dass die Zahlen mit einem Komma in die Datenbank gespeichert werden, also 1,95. Korrekt wäre meines Wissens nach aber mit Punkt, also 1.95.
    Wenn ich den Wert über das Tool 'DB Browser for SQLite' auf 1.95 ändere, wird dieser anschließend auch korrekt ausgegeben.
    Eine korrekte Ausgabe erfolgt auch, wenn ich beim Erstellen der Tabelle als Datentyp TEXT angebe, anstelle von DOUBLE.
    Wie kann ich die Zahlen in der korrekten Form in der Datenbank speichern, damit ich sie anschließend auch wieder ausgeben kann?

    Hier einmal mein Code:

    VB.NET-Quellcode

    1. Private Sub btn_CreateTestDB_Click(sender As Object, e As EventArgs) Handles btn_CreateTestDB.Click
    2. 'Datenbank erstellen
    3. Dim connect As New SQLiteConnection()
    4. connect.ConnectionString = "Data Source=TestDB.db"
    5. connect.Open()
    6. connect.Close()
    7. 'Tabelle erstellen
    8. Dim command As SQLiteCommand
    9. connect.ConnectionString = "Data Source=TestDB.db"
    10. connect.Open()
    11. command = connect.CreateCommand
    12. command.CommandText = "CREATE TABLE Tab_Test(ID INTEGER PRIMARY KEY AUTOINCREMENT,TEST DOUBLE);"
    13. command.ExecuteNonQuery()
    14. command.Dispose()
    15. connect.Close()
    16. MsgBox("DB wurde erstellt")
    17. End Sub
    18. Private Sub btn_testSave_Click(sender As Object, e As EventArgs) Handles btn_testSave.Click
    19. 'Verbindung herstellen
    20. Dim SQLconnect As New SQLite.SQLiteConnection()
    21. Dim SQLcommand As SQLiteCommand
    22. SQLconnect.ConnectionString = "Data Source=TestDB.db"
    23. SQLconnect.Open()
    24. SQLcommand = SQLconnect.CreateCommand
    25. 'SQL-Befehl in String speichern
    26. Dim dblTest As Double = 1.59
    27. Dim SQLCommandSave As String = "INSERT INTO Tab_Test (TEST) VALUES (" & "'" & dblTest & "')"
    28. 'Befehl ausführen und Daten speichern
    29. SQLcommand.CommandText = SQLCommandSave
    30. SQLcommand.ExecuteNonQuery()
    31. 'Verbindung schließen
    32. SQLcommand.Dispose()
    33. SQLconnect.Close()
    34. MsgBox("Datensatz gespeichert")
    35. End Sub
    36. Private Sub btn_testLoad_Click(sender As Object, e As EventArgs) Handles btn_testLoad.Click
    37. tb_test.Text = ""
    38. Dim SQLconnect As New SQLite.SQLiteConnection()
    39. Dim SQLcommand As SQLiteCommand
    40. SQLconnect.ConnectionString = "Data Source=TestDB.db"
    41. SQLconnect.Open()
    42. SQLcommand = SQLconnect.CreateCommand
    43. SQLcommand.CommandText = "Select * FROM Tab_Test"
    44. Dim SQLreader As SQLiteDataReader = SQLcommand.ExecuteReader()
    45. Dim strWert = Nothing
    46. While SQLreader.Read
    47. strWert = SQLreader(1)
    48. End While
    49. tb_test.Text = strwert
    50. End Sub


    Vielen Dank schon mal
    welche SQL-Sprach-Dokumentation haste verwendet? - da müssteste Syntaxfehler ja nachgugge können.

    ich glaub, das Insert ist falsch - Zahlen werden nicht gequoted. (aber sicher bin ich nicht).
    Evtl. ist auch schon das Create Table falsch, und man muss eine Precision angeben. (aber sicher bin ich nicht).
    Oder die Sqlite-Installation hat eine Macke - für Installations-Macken scheint mir SqLite immer gut für zu sein. (Erfahrungswert - aber nicht viel Erfahrung)