从SQLite返回一个int结果



所以我想找到最大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 });
}

相关内容

  • 没有找到相关文章

最新更新