Je suis en train de lire à partir d'une base de données SQLite en utilisant le code suivant:Les numéros de colonne Android SQlite sont-ils incompatibles?
public List<DBEntry> getAllDBEntrys() {
List<DBEntry> DBEntrys = new ArrayList<DBEntry>();
Cursor cursor = database.query(DatabaseClass.TABLE_APPTS,
allColumns, null, null, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
DBEntry DBEntry = cursorToDBEntry(cursor);
DBEntrys.add(DBEntry);
cursor.moveToNext();
}
// Make sure to close the cursor
cursor.close();
return DBEntrys;
}
private DBEntry cursorToDBEntry(Cursor cursor) {
DBEntry DBEntry = new DBEntry();
DBEntry.setId(cursor.getLong(0));
DBEntry.setName(cursor.getString(1));
DBEntry.setStartDate(new Date(cursor.getLong(2)));
DBEntry.setDueDate(new Date(cursor.getLong(3)));
DBEntry.SetPriority(cursor.getInt(4));
DBEntry.setDesc(cursor.getString(5));
DBEntry.SetCompletion(cursor.getInt(6)==1?true:false);
return DBEntry;
}
Je reçois cette erreur:
01-23 16:35:23.509: E/CursorWindow(14609): Failed to read row 0, column 6 from a CursorWindow which has 1 rows, 6 columns.
La base de données a déjà une entrée, comme l'utilitaire sqlite3 montre:
sqlite> select * from ThingsToDo;
0|asdf|1358847122203|1359192722202|7|abcd|0
sqlite> .schema
CREATE TABLE ThingsToDo(_id integer primary key autoincrement,name text not null,start_date integer,due_date integer,priority integer,description text, completed integer);
CREATE TABLE android_metadata (locale TEXT);
Je pense que le problème est que la colonne _id est pas compté comme une colonne, parce que la fonction cursor.getColumnCount()
retourne 6, et non 7 comme sql Utilitaire ite3 a montré quand je suis passé à classer sur mon PC. Comment puis-je faire ce travail?
Merci. Je vais le vérifier bientôt :) – Tim