Penso che il tuo problema sia con l'ordine delle colonne e, soprattutto, la restrizione che è un alias per la colonna rowid, nel tuo caso l'Id colonna (Id INTEGER PRIMARY KEY AUTOINCREMENT
definisce ID come alias della colonna rowid ).
- Nota che altre colonne possono memorizzare qualsiasi valore come da :-
Qualsiasi colonna in un database SQLite versione 3, ad eccezione di una colonna INTEGER PRIMARYKEY, può essere utilizzata per memorizzare un valore di qualsiasi classe di archiviazione.
- Tipi di dati in SQLite versione 3
Tale colonna può memorizzare solo un valore intero. String sql = "INSERT INTO PHOTO VALUES(NULL,?,?,?,?)";
equivale a inserire valori come da :-
- NULL nel nome colonna
- nome, come passato, nel lat colonna
- lat, come passato, nel lon colonna
- lon, come passato, nell'immagine colonna
- immagine, come passata, nella colonna Id (ciao[] non può essere memorizzato nella colonna Id)
Puoi risolvere il problema fornendo i nomi delle colonne o riordinando le colonne in modo che corrispondano all'ordine in cui sono state definite (il primo è probabilmente la pratica migliore).
In quanto tale, uno dei seguenti dovrebbe risolvere il problema:-
String sql = "INSERT INTO PHOTO (Id, name, lat, lon, image) VALUES(NULL,?,?,?,?)";
oppure :-
String sql = "INSERT INTO PHOTO VALUES(?,?,?,?,NULL)";