sql >> Databasteknik >  >> RDS >> SQLite

Datatyp matchar inte (kod 20) vid infogning

Jag tror att ditt problem är med kolumnordningen och viktigast av allt begränsningen att ett alias för den röda kolumnen, i ditt fall Id kolumn (Id INTEGER PRIMARY KEY AUTOINCREMENT definierar Id som ett alias för kolumnen rowid ).

  • Observera att andra kolumner kan lagra vilket värde som helst enligt :-
    • Vilken kolumn som helst i en SQLite version 3-databas, förutom en INTEGER PRIMARYKEY-kolumn, kan användas för att lagra ett värde för vilken lagringsklass som helst.

    • Datatyper i SQLite version 3

En sådan kolumn kan bara lagra ett heltalsvärde. String sql = "INSERT INTO PHOTO VALUES(NULL,?,?,?,?)"; motsvarar att infoga värden enligt :-

  • NULL i namnet kolumn
  • namn, som passerat, till lat kolumn
  • lat, som passerat, in i lon kolumn
  • lon, som passerat, in i bilden kolumn
  • bild, som skickad, till Id-kolumnen (hejdå[] kan inte lagras i kolumnen Id)

Du kan fixa detta genom att antingen tillhandahålla kolumnnamnen eller genom att ändra ordning på kolumnerna så att de matchar den ordning som de definierades i (det förra är utan tvekan bättre praxis).

Som sådan bör något av följande lösa problemet :-

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

eller :-

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



  1. Hur man läser versionsnummer från en databasfil i Android som placeras i tillgångsmappen

  2. Komma igång med MariaDB med Docker, Java Spring och JDBC

  3. Hur hittar man skillnaden i svartvitt TIMESTAMP-format i Oracle?

  4. tom sträng i orakel