从SQLite返回一个int结果

时间:2016-05-14 05:38:33

标签: android sqlite

所以我想找到最大ID并通过添加1来返回它。

以下是我在SQLhelper中的代码。它看起来很错,因为它的公共空白,但我返回CR。我有点困惑,因为光标用于读取记录,但我只想使用SQL查询返回整数的结果。

 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);

有人请帮助我。谢谢。

3 个答案:

答案 0 :(得分:2)

你必须这样做:

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 中的列alias,例如 IFNULL(MAX(id),0)+1 as maxcount ,然后您可以在从光标中获取值时提供它:< / p>

id = CR.getInt(c.getColumnIndex("maxcount"));

它会根据需要返回Integer。

希望它会对你有所帮助。

答案 1 :(得分:1)

试试这个

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();
}

答案 2 :(得分:1)

如果name是字符串值,则必须在SQL中引用它。但更好的方法是使用参数。

要从查询中读取单个数字而不必使用光标,有一个有用的helper function

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 });
}