您好我正在为我的应用程序使用SQlite数据库。 我想检索增量主键的最大值,即ROWID。 但是当我为此写查询时,我得到了这个例外
10-21 11:02:50.062: D/IllegalStateException(2575): java.lang.IllegalStateException: get field slot from row 0 col -1 failed
我检索最大值的方法是
public String getMaxID(){
SQLiteDatabase db = this.getReadableDatabase();
String productName = SingleTonClass.getInstance().dummy_productname;
String QUERY = "SELECT max("+ROW_ID+") as ID FROM "+TABLE_NAME
+" where "+PRODUCT_NAME+ " = " + "'" +productName+ "'";
Log.d("Query for Get previous cost", ""+QUERY);
Cursor maxID = db.rawQuery(QUERY, null);
String max = null;
int temp = 1;
try{
while(maxID.moveToNext()){
max = maxID.getString(maxID.getColumnIndex(ROW_ID));
Log.d("MaxID", ""+max);
maxID.close();
}
// }
// return max;
}catch(IllegalStateException e){
Log.d("IllegalStateException", ""+e);
}finally{
// maxID.close();
/ db.close();
}
return max;
}
请帮帮我。 感谢。
答案 0 :(得分:0)
问题在这里
max = maxID.getString(maxID.getColumnIndex(ROW_ID));
更改为
max = maxID.getString(maxID.getColumnIndex("ID"));
答案 1 :(得分:0)
您正试图获取此专栏:
max = maxID.getString(maxID.getColumnIndex(ROW_ID));
但在您的查询中,您使用的是别名:
"max("+ROW_ID+") as ID"
尝试执行以下操作:
max = maxID.getString(maxID.getColumnIndex("ID")));
希望有所帮助