Tôi nghĩ vấn đề của bạn là với thứ tự cột và quan trọng nhất là hạn chế là bí danh cho cột rowid, trong trường hợp của bạn là Id cột ( Id INTEGER PRIMARY KEY AUTOINCREMENT xác định Id dưới dạng bí danh của cột rowid
).
- Lưu ý rằng các cột khác có thể lưu trữ bất kỳ giá trị nào theo:-
-
Bất kỳ cột nào trong cơ sở dữ liệu SQLite phiên bản 3, ngoại trừ cột INTEGER PRIMARYKEY, có thể được sử dụng để lưu trữ giá trị của bất kỳ lớp lưu trữ nào.
- Kiểu dữ liệu trong SQLite Phiên bản 3
-
Một cột như vậy chỉ có thể lưu trữ một giá trị số nguyên. String sql ="CHÈN VÀO GIÁ TRỊ ẢNH (NULL,?,?,?,?)";
tương đương với việc chèn các giá trị như sau:-
- NULL vào tên cột
- tên, như đã được chuyển, vào vĩ độ cột
- vĩ độ, như đã trôi qua, thành kinh độ cột
- lon, như đã chuyển, vào hình ảnh cột
- hình ảnh, như được chuyển, vào cột Id ( tạm biệt [] không thể được lưu trữ trong cột Id)
Bạn có thể khắc phục điều này bằng cách cung cấp tên cột hoặc sắp xếp lại các cột để khớp với thứ tự mà chúng đã được xác định (trước đây được cho là phương pháp tốt hơn).
Như vậy, một trong hai cách sau sẽ khắc phục được sự cố:-
String sql = "INSERT INTO PHOTO (Id, name, lat, lon, image) VALUES(NULL,?,?,?,?)";
hoặc:-
String sql = "INSERT INTO PHOTO VALUES(?,?,?,?,NULL)";