gpt4 book ai didi

java - SQLite,以数组形式返回数据

转载 作者:太空宇宙 更新时间:2023-11-04 12:02:59 26 4
gpt4 key购买 nike

我的 Android 应用程序中有一个 SQLite 数据库,其结构如下:

public void onCreate(SQLiteDatabase db) {
String CREATE_LISTS_TABLE = "CREATE TABLE " + TABLE_LISTS +
"("+
_ID + " INTEGER PRIMARY KEY , " +
NOTE + " TEXT" +
")";
db.execSQL(CREATE_LISTS_TABLE);
}

这很有效,因为我可以毫无问题地将数据插入其中。但是我需要将笔记存储在数组中。我目前有以下查询:

public List<String> getAllNotes() {
List<String> notes = new ArrayList<>();

String GET_ALL_NOTES = "SELECT * FROM " + TABLE_LISTS;

SQLiteDatabase db = getReadableDatabase();
if(db!=null)
{
Cursor cursor = db.rawQuery(GET_ALL_NOTES, null);
cursor.moveToFirst();
while(!cursor.isAfterLast())
{
notes.add(String.valueOf(cursor.getInt(cursor.getColumnIndex("notes"))));
cursor.moveToNext();
}
cursor.close();
}
db.close();

return notes;
}

但是,这会出现以下错误:

java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.

我想知道如何解决这个问题,我已经阅读了 android 开发人员的内容,但我似乎无法让任何东西发挥作用。

提前致谢

最佳答案

检查“NOTE”的值,并将其用于:notes.add(String.valueOf(cursor.getInt(cursor.getColumnIndex(NOTE))));

我认为调用电话的最佳方式应该是这样的:

// Check the cursor
if(cursor != null) {
if (cursor.moveToFirst()) {
// Variables to be used
String note;

// Col position
int colNote = cursor.getColumnIndex(NOTE);

do {
// Get the information
note = cursor.getString(colNote);

// Add the note
notes.add(note);
} while (cursor.moveToNext());
}

// Close the cursor
cursor.close();
}

关于java - SQLite,以数组形式返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40706066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com