sql >> Databáze >  >> RDS >> SQLite

Nesoulad datových typů (kód 20) při vkládání

Myslím, že váš problém se týká pořadí sloupců a hlavně omezení, že alias pro sloupec rowid, ve vašem případě ID sloupec (Id INTEGER PRIMARY KEY AUTOINCREMENT definuje ID jako alias sloupce rowid ).

  • Všimněte si, že ostatní sloupce mohou uložit libovolnou hodnotu podle :-
    • Jakýkoli sloupec v databázi SQLite verze 3, kromě sloupce INTEGER PRIMARYKEY, lze použít k uložení hodnoty jakékoli třídy úložiště.

    • Datové typy v SQLite verze 3

Takový sloupec může uložit pouze celočíselnou hodnotu. String sql = "INSERT INTO PHOTO VALUES(NULL,?,?,?,?)"; odpovídá vložení hodnot podle :-

  • Do jména zadejte hodnotu NULL sloupec
  • název, jak byl předán, do lat sloupec
  • lat, jak bylo předáno, do lon sloupec
  • lon, jak bylo předáno, do obrazu sloupec
  • obrázek, tak jak byl předán, do sloupce ID (sbohem[] nelze uložit do sloupce ID)

Můžete to opravit buď zadáním názvů sloupců, nebo přeuspořádáním sloupců tak, aby odpovídaly pořadí, ve kterém byly definovány (první možnost je pravděpodobně lepší).

Problém by tedy měl vyřešit některý z následujících kroků :-

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

nebo :-

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



  1. Jaký je význam 1/1/1753 v SQL Server?

  2. Doporučené postupy protokolování auditu PostgreSQL

  3. ORA 00904 Chyba:Neplatný identifikátor

  4. SQL INSERT bez určení sloupců. Co se stalo?