Acho que seu problema é com a ordem das colunas e, mais importante, a restrição de um alias para a coluna rowid, no seu caso, o Id coluna (
Id INTEGER PRIMARY KEY AUTOINCREMENT
define ID como um alias da coluna rowid ). - Observe que outras colunas podem armazenar qualquer valor conforme :-
Qualquer coluna em um banco de dados SQLite versão 3, exceto uma coluna INTEGER PRIMARYKEY, pode ser usada para armazenar um valor de qualquer classe de armazenamento.
- Tipos de dados no SQLite versão 3
Essa coluna só pode armazenar um valor inteiro.
String sql = "INSERT INTO PHOTO VALUES(NULL,?,?,?,?)";
equivale a inserir valores de acordo com:- - NULL no nome coluna
- nome, conforme passado, no lat coluna
- lat, conforme passado, no lon coluna
- lon, conforme passado, na imagem coluna
- imagem, conforme passado, na coluna ID (tchau[] não pode ser armazenado na coluna Id)
Você pode corrigir isso fornecendo os nomes das colunas ou reordenando as colunas para corresponder à ordem em que foram definidas (o primeiro, sem dúvida, a melhor prática).
Como tal, qualquer um dos seguintes deve corrigir o problema:-
String sql = "INSERT INTO PHOTO (Id, name, lat, lon, image) VALUES(NULL,?,?,?,?)";
ou :-
String sql = "INSERT INTO PHOTO VALUES(?,?,?,?,NULL)";