所以我想找到最大ID,并通过添加1来返回它。
以下是我在SQLhelper中的代码。它看起来很错误,因为它的公共void在中,但我返回了CR。我有点困惑,因为游标是用来读取记录的,但我只希望使用SQL查询返回integer的结果。
public int getID( String name){
String idquery="SELECT IFNULL(MAX(id),0)+1 FROM "+TableInfo.TABLE_NAME+ " WHERE appliance="+name;
SQLiteDatabase SQ=this.getReadableDatabase();
Cursor CR=SQ.rawQuery(idquery,null);
return CR;
}
这就是我从另一个活动中对它的称呼
int no_id=DB.getID(name);
有人请帮帮我。谢谢。
你必须这样做:
public int getID( String name){
String idquery="SELECT IFNULL(MAX(id),0)+1 FROM "+TableInfo.TABLE_NAME+ " WHERE appliance="+name;
SQLiteDatabase SQ=this.getReadableDatabase();
Cursor CR=SQ.rawQuery(idquery,null);
int id = -1;
if (CR != null && CR.getCount() > 0) {
CR.moveToFirst();
id = CR.getInt(c.getColumnIndex(YOUR_COLUMN_NAME));
CR.close();
}
return id;
}
编辑:
在查询IFNULL(MAX(id),0)+1
中更改您的列别名,如IFNULL(MAX(id),0)+1 as maxcount
,然后您可以在从光标获取值时给出它:
id = CR.getInt(c.getColumnIndex("maxcount"));
并且它将根据您的需要返回Integer。
希望它能帮助你。
试试这个
public int getMaxID(){
int maxID = 0;
String selectQuery = "SELECT "+here you primary key name +" FROM " + TableInfo.TABLE_NAME;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do{
maxID = cursor.getInt(0);
}while(cursor.moveToNext());
}
return cursor.getCount();
}
如果name
是字符串值,则必须在SQL中引用它。但更好的方法是使用参数。
要从查询中读取单个数字而不必摆弄光标,有一个有用的辅助函数:
int getID(String name) {
SQLiteDatabase db = getReadableDatabase();
return (int)DatabaseUtils.longForQuery(db,
"SELECT IFNULL(MAX(id),0)+1"+
" FROM "+TableInfo.TABLE_NAME+
" WHERE appliance=?",
new String[]{ name });
}