gpt4 book ai didi

android - 来自 CursorWindow 的 java.lang.IllegalStateException : Couldn't read row 0, col 10

转载 作者:搜寻专家 更新时间:2023-11-01 08:52:14 25 4
gpt4 key购买 nike

请检查以下代码:

List<Database> zaznamy = new ArrayList<Database>();
String selectQuery = "SELECT X FROM Data WHERE LEVEL_1 =-24 AND LEVEL_2 =-48 AND LEVEL_3 =-55 AND LEVEL_4 =0";
File dbfile = new File("/sdcard/rtls/Databases/"+DBName );
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null);
Cursor cursor = db.rawQuery(selectQuery,null);

String bodX="empty";
if (cursor.moveToFirst())

{
do {
Database zaznam = new Database();
zaznam.setX(Integer.parseInt(cursor.getString(10)));
zaznamy.add(zaznam);
} while (cursor.moveToNext());

for (Database cn : zaznamy)
{
Log.d("X: ", Integer.toString(cn.getX()));
bodX = (cn.getX()+ "//").toString();
Log.d("X", bodX);
}
}

它说无法从 CursorWindow 读取第 0 行,第 10 列。我用 SQLite 浏览器测试了数据库。数据库在第 10 列第 0 行正好有 1 个 X。我相信 SQL 查询工作正常。谁能告诉我,为什么它不能读取?还是错在哪里?

编辑:将代码更正为:

do {
Database zaznam = new Database();
zaznam.setX(cursor.getInt(10));
zaznamy.add(zaznam);
} while (cursor.moveToNext());

因为第 10 列的整数值,但仍然没有运气。同样的错误

最佳答案

您的查询在投影中只有一列 - “X”列。该列在查询投影中的索引为 0,因此要使您的代码正常工作,请将循环更改为如下所示:

do {
Database zaznam = new Database();
zaznam.setX(cursor.getInt(0));
zaznamy.add(zaznam);
} while (cursor.moveToNext());

为避免将来出现此类问题,请使用以下内容:

cursor.getInt(cursor.getColumnIndexOrThrow("X");

请记住,列索引与查询投影相关,而不是数据库中列的顺序,因此例如当您编写“select B A C from SOME_TABLE”时,B 列的索引为 0,A 列的索引为 1,等等。如果在您的数据库中它们是按字母顺序 A B C。

关于android - 来自 CursorWindow 的 java.lang.IllegalStateException : Couldn't read row 0, col 10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22101699/

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