gpt4 book ai didi

android - cursor.getString() 抛出的 CursorIndexOutOfBoundsException

转载 作者:行者123 更新时间:2023-11-29 21:38:35 26 4
gpt4 key购买 nike

我在我的 sqlite 数据库中使用一个配置表。这具有以下组成:

private static final String DATABASE_CONFIG_CREATE = 
"CREATE TABLE " + TABLE_CONFIGS
+ "("
+ CONFIG_HIDDEN_CATEGORIES + " TEXT DEFAULT '1,2' NULL"
+ ");";

稍后我尝试使用以下代码访问:

Cursor cursor = database.query(DatabaseHelper.TABLE_CONFIGS, new String[] {DatabaseHelper.CONFIG_HIDDEN_CATEGORIES}, null, null, null, null, null);
try {
cursor.moveToFirst();

int test = cursor.getCount();

String data = cursor.getString(0);

}
catch (Exception exception) {

但是 cursor.getString(0) 行抛出以下异常(变量 test 为 0):

android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0

当我运行以下代码时,CONFIG_HIDDEN_CATEGORIES 列向我显示...出了什么问题?

    Cursor dbCursor = database.query(DatabaseHelper.TABLE_CONFIGS, null, null, null, null, null, null);
String[] columnNames = dbCursor.getColumnNames(); // index 0 is the value of CONFIG_HIDDEN_CATEGORIES

最佳答案

这意味着你的Cursor是空的。您应该将您的操作包装到正确的条件:

try {
if (cursor.moveToFirst()) {
String data = cursor.getString(cursor.getColumnIndex("columnName"));
// do your stuff
}
else {
// cursor is empty
}
}
...

您的实际代码无法正常工作,因为您只是调用了 moveToFirst()方法,但您不知道(未测试)它是否会返回 true 或 false。

您的代码只有在 Cursor 时才能正确运行不是空的。在第二种情况下,它将不起作用。

注意:我推荐你使用getColumnIndex(<columnName>)根据名称获取列索引的方法。这种方法更安全,更易于阅读。

关于android - cursor.getString() 抛出的 CursorIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17741869/

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