SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Datentypkonflikt (Code 20) beim Einfügen

Ich denke, Ihr Problem liegt in der Spaltenreihenfolge und vor allem in der Einschränkung, dass ein Alias ​​​​für die Rowid-Spalte, in Ihrem Fall die Id, verwendet wird Spalte (Id INTEGER PRIMARY KEY AUTOINCREMENT definiert Id als Alias ​​der rowid-Spalte ).

  • Beachten Sie, dass andere Spalten jeden Wert gemäß :-
      speichern können
    • Jede Spalte in einer SQLite-Datenbank der Version 3, mit Ausnahme einer INTEGER PRIMARYKEY-Spalte, kann zum Speichern eines Werts einer beliebigen Speicherklasse verwendet werden.

    • Datentypen in SQLite Version 3

Eine solche Spalte kann nur einen ganzzahligen Wert speichern. String sql = "INSERT INTO PHOTO VALUES(NULL,?,?,?,?)"; entspricht dem Einfügen von Werten gemäß :-

  • NULL in den Namen Spalte
  • name, wie übergeben, in das lat Spalte
  • lat, wie übergeben, in den lon Spalte
  • lon, wie übergeben, in das Bild Spalte
  • image, wie übergeben, in die Id-Spalte (bye[] kann nicht in ID-Spalte gespeichert werden)

Sie können dies beheben, indem Sie entweder die Spaltennamen angeben oder die Spalten neu anordnen, damit sie der Reihenfolge entsprechen, in der sie definiert wurden (das erstere ist wohl die bessere Vorgehensweise).

Daher sollte eine der folgenden Methoden das Problem beheben:-

String sql = "INSERT INTO PHOTO (Id, name, lat, lon, image) VALUES(NULL,?,?,?,?)";

oder :-

String sql = "INSERT INTO PHOTO VALUES(?,?,?,?,NULL)";