SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Niezgodność typu danych (kod 20) podczas wstawiania

Myślę, że Twój problem dotyczy kolejności kolumn i, co najważniejsze, ograniczenia aliasu kolumny z wierszami, w Twoim przypadku Identyfikatora kolumna (Id INTEGER PRIMARY KEY AUTOINCREMENT definiuje Identyfikator jako alias kolumny rowid ).

  • Pamiętaj, że inne kolumny mogą przechowywać dowolną wartość zgodnie z :-
    • Dowolna kolumna w bazie danych SQLite w wersji 3, z wyjątkiem kolumny INTEGER PRIMARYKEY, może służyć do przechowywania wartości dowolnej klasy pamięci.

    • Typy danych w SQLite w wersji 3

Taka kolumna może przechowywać tylko wartość całkowitą. String sql = "INSERT INTO PHOTO VALUES(NULL,?,?,?,?)"; oznacza wstawianie wartości zgodnie z :-

  • NULL w nazwie kolumna
  • imię i nazwisko przekazane do łac kolumna
  • lat, zgodnie z przekazem, do lonu kolumna
  • lon, zgodnie z przekazem, do obrazu kolumna
  • obraz przekazany do kolumny Id (bye[] nie może być przechowywany w kolumnie Id)

Możesz to naprawić, podając nazwy kolumn lub zmieniając kolejność kolumn, aby dopasować je do kolejności, w jakiej zostały zdefiniowane (pierwsza opcja jest prawdopodobnie lepszą praktyką).

W związku z tym jedna z poniższych czynności powinna rozwiązać problem:-

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

lub :-

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. Aktualizacja bazy danych i aplikacji Android SQLite

  2. Jak działa SQLite Trim()

  3. Jak mogę odczytać dane z zaszyfrowanej bazy danych za pomocą SQLiteAssetHelper?

  4. Jak zamawiać według nazwy miesiąca w SQLite

  5. Polecenia SQLite