【发布时间】:2012-04-11 17:43:03
【问题描述】:
我一直在尝试从 SQLite 数据库中获取所有行。但是我从以下代码中只得到了最后一行。
FileChooser 类:
public ArrayList<String> readFileFromSQLite() {
fileName = new ArrayList<String>();
fileSQLiteAdapter = new FileSQLiteAdapter(FileChooser.this);
fileSQLiteAdapter.openToRead();
cursor = fileSQLiteAdapter.queueAll();
if (cursor != null) {
if (cursor.moveToFirst()) {
do {
fileName.add(cursor.getString(cursor.getColumnIndex(FileSQLiteAdapter.KEY_CONTENT1)));
} while (cursor.moveToNext());
}
cursor.close();
}
fileSQLiteAdapter.close();
return fileName;
}
FileSQLiteAdapter 类:
public Cursor queueAll() {
String[] columns = new String[] { KEY_ID, KEY_CONTENT1 };
Cursor cursor = sqLiteDatabase.query(MYDATABASE_TABLE, columns, null,
null, null, null, null);
return cursor;
}
请告诉我我的错误在哪里。欣赏。
【问题讨论】:
-
cursor.getCount() 的值是多少?
-
@Anirudh 我不明白。你能帮我解释一下吗?
-
你能把这条语句放在你的代码中吗 - Log.d("TAG","Retrieved rows - " + cursor.getCount());告诉我你看到了什么价值?那就是游标检索到的行数。在 queueAll() 方法中返回光标之前执行此操作。
-
@Anirudh 如果我在 queueAll() 之前执行此操作,它将得到 NullPointerException。如果我在 cursor = fileSQLiteAdapter.queueAll(); 之后执行它,它将得到 0。