"INSERT INTO" mit Parameter in SQLite-Tabelle

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von picoflop.

    "INSERT INTO" mit Parameter in SQLite-Tabelle

    Hi Leute,

    ich hab folgende SQLite-Tabelle:

    SQL-Abfrage

    1. CREATE TABLE t_gewicht
    2. (
    3. ID INTEGER PRIMARY KEY AUTOINCREMENT,
    4. Datum TEXT NOT NULL,
    5. KG REAL NOT NULL,
    6. BMI REAL NOT NULL,
    7. KFA REAL
    8. );


    Beim Einfügen von Datensätzen in die Tabelle erhalte ich nun folgende Fehlermeldung:
    Abort due to constraint violation t_gewicht.Datum may not be NULL


    Die Daten füge ich so ein:

    VB.NET-Quellcode

    1. DBcmd.CommandText = "INSERT INTO t_gewicht(Datum,KG,BMI) VALUES (@Datum,@KG,@BMI);"
    2. DBcmd.Parameters.Add("@Datum", DbType.String, "15.02.2011")
    3. DBcmd.Parameters.Add("@KG", DbType.Double, 200.0)
    4. DBcmd.Parameters.Add("@BMI", DbType.Double, 55.0)
    5. DBcmd.ExecuteNonQuery()


    Jemand ne Idee, was da falsch läuft? Das Feld "ID" sollte er ja automatisch befüllen bzw. erhöhen und das Feld "KFA" muss nicht befüllt werden. Keine Ahnung, was er da mit dem Datum hat.

    Marcus Gräfe schrieb:

    Was passiert denn, wenn du die Werte direkt in die SQL-Anweisung schreibst? Ich sehe nämlich ansonsten keinen Fehler.


    Tatsächlich .... wenn ich die Werte direkt reinschreib, funktionierts. Nur hatte ich Probleme mit der Umwandlung in Double-Werte:
    SQLite error 4 values for 3 columns


    Er macht hier aus dem Punkt unverständlicherweise ein Komma und dann ist das SQL-Statement natürlich falsch.

    VB.NET-Quellcode

    1. Dim Gewicht As Double = 200.5
    2. DBcmd.CommandText = "INSERT INTO t_gewicht(Datum,KG,BMI) VALUES ('15.02.2011'," & Gewicht & ",50.0);"
    3. DBcmd.ExecuteNonQuery()


    @picoflop: Genau das wars! Mit

    VB.NET-Quellcode

    1. DBcmd.Parameters.AddWithValue("@Datum", "15.02.2011")
    funktionierts!
    Dann geistert hier im Forum irgendwo n falscher Code rum. Würd mich aber trotzdem noch interessieren, warum oben das nicht funktioniert mit der Double-Zahl.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Fonsi“ ()