我正在尝试创建一个方法来检索特定表的最大ID。
这是不起作用的代码:
private long getMaxId()
{
String query = "SELECT MAX(id) AS max_id FROM mytable";
Cursor cursor = db.rawQuery(query, new String[] {"max_id"});
int id = 0;
if (cursor.moveToFirst())
{
do
{
id = cursor.getInt(0);
} while(cursor.moveToNext());
}
return id;
}
抛出的异常是:
E/AndroidRuntime(24624): android.database.sqlite.SQLiteException: bind or column index out of range: handle 0x200408
我想问题就在于这一行:
id = cursor.getInt(0);
有人知道如何解决这个问题吗?
感谢。
答案 0 :(得分:8)
尝试更换:
Cursor cursor = db.rawQuery(query, new String[] {"max_id"});
与
Cursor cursor = db.rawQuery(query, null);
来自rawQuery description,第二个参数:
您可以在where子句中包含?s 查询,将替换为 来自selectionArgs的值。该 值将绑定为字符串。
由于您的SQL查询中没有任何占位符,因此可能是问题的根源。