我需要从我的数据库中获取最新条目,但不是自动增量。 这个函数在我的databasehandler中:
public int getLatestRouteNumber()
{
int number = 0;
SQLiteDatabase db = this.getReadableDatabase();
String query = "SELECT MAX("+ KEY_ROUTENUMBER + ") FROM " + TABLE_LOCATIONS;
Cursor c = db.rawQuery(query, null);
if (c.moveToFirst() && c != null) {
number = c.getInt(3);
}
return number;
}
它在" number = c.getInt(3)的行处进行分析。 我的数据库中的第三列存在并且其中包含数据。
我遇到的错误是"无法从CursorWindow读取第0行第3列。在从中访问数据之前,请确保正确初始化Cursor。"我只需要整个数据库中的一个值,甚至整行都不需要。
答案 0 :(得分:1)
光标中只有一列,但试图获取第3列的值... Tat是错误
将其更改为getInt(0);
答案 1 :(得分:0)
返回的结果集与您的案例中的表列无关。你应该使用
number = c.getInt(0);
答案 2 :(得分:0)
您的结果集只包含一列和一行,基本上是一个标量值,它与您的表中有多少列无关,这里您应该考虑的是从查询中获得的值在您的情况下只有一个价值。使用
getInt(0)
答案 3 :(得分:0)
String query = "SELECT MAX("+ KEY_ROUTENUMBER + ") as my_max FROM " + TABLE_LOCATIONS;
并且:
columnIndex = c.getColumnIndexOrThrow("my_max");
number = c.getInt(columnIndex );
这比使用索引更好,如果原始查询发生更改,索引可能会出错。
答案 4 :(得分:0)
getInt(3)返回查询返回的第3列的值。您的查询只有1列。
将getInt(3)更改为getInt(0)
答案 5 :(得分:0)
“c.getInt(3);”没有从表中的列中获取值,它从光标中的列中获取它。
您只在光标中选择了一列。
所以我认为它应该是“c.getInt(1);”