SQLite
 sql >> база данни >  >> RDS >> SQLite

Несъответствие на типа данни (код 20) при вмъкване

Мисля, че проблемът ви е с реда на колоните и най-важното ограничаването на псевдонима за колоната rowid, във вашия случай Id колона (Id INTEGER PRIMARY KEY AUTOINCREMENT дефинира Id като псевдоним на колоната rowid ).

  • Обърнете внимание, че другите колони могат да съхраняват всяка стойност според :-
    • Всяка колона в база данни на SQLite версия 3, с изключение на колона INTEGER PRIMARYKEY, може да се използва за съхраняване на стойност от всеки клас за съхранение.

    • Типове данни в SQLite версия 3

Такава колона може да съхранява само цяло число. String sql = "INSERT INTO PHOTO VALUES(NULL,?,?,?,?)"; се равнява на вмъкване на стойности според :-

  • NULL в името колона
  • име, както е предадено, в lat колона
  • lat, както е предадено, в lon колона
  • lon, както е предадено, в изображението колона
  • изображение, както е предадено, в колоната Id (чао[] не може да се съхранява в колона Id)

Можете да коригирате това, като предоставите имената на колоните или като пренаредите колоните, така че да съответстват на реда, в който са били дефинирани (първото може би е по-добрата практика).

Като такова едно от следните трябва да реши проблема:-

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

или :-

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 3 начина да замените NULL с „N/A“ в SQLite

  2. Надстройте редовете само при надстройка на приложението

  3. 2 начина за връщане само на числовите стойности от колона на базата данни на SQLite

  4. Как да изпълним SQLite заявка в приложение за Android?

  5. изтрийте базата данни sqlite при актуализиране на нова версия на приложението