从android中的SQLite数据库中检索整数值

时间:2017-08-15 12:04:05

标签: android sqlite

在这个应用程序中我试图给每种类型的用户提供不同的欢迎信息 所以这是我的DB帮助程序类中的代码

public int loginCheck(String a,String b)
{
   int ty;
    SQLiteDatabase db=this.getWritableDatabase();
    Cursor c = db.rawQuery("SELECT * FROM users where user_name = '"+a+"'AND user_password = '"+b+"';", null);
    ty= c.getInt(c.getColumnIndex("user_type"));

    if (c.getCount()<=0)
    {
        c.close();
        db.close();
        return 2;
    }
    else
    c.close();       
    db.close();       
    return ty;


}

它应检查用户类型是0还是1,并根据返回值显示欢迎消息,我得到的是检索列号,它检索6和&#34; user_type&#34;是第六列

1 个答案:

答案 0 :(得分:1)

您需要先移至第一行:

public int loginCheck(String a,String b) {
    int ty;
    SQLiteDatabase db=this.getWritableDatabase();
    Cursor c = db.rawQuery("SELECT * FROM users where user_name = '"+a+"' AND user_password = '"+b+"';", null);

    if (c.moveToFirst()) {
        ty = c.getInt(c.getColumnIndex("user_type"));
    } else {
        ty = 2;
    }

    c.close();
    db.close();

    return ty;
}
如果

cursor.moveToFirst无法移动到第一行(例如光标为空),则返回false,因此不需要c.getCount()检查

=====

Android执行此操作的方式(除非必须使用rawQuery):

public int loginCheck(String a,String b) {
    int ty;
    SQLiteDatabase db=this.getWritableDatabase();
    Cursor c = db.query("users", new String[] { "user_type" }, "user_name = ? AND user_password = ?", new String[] {a, user_password}, null, null, null);

    if (c.moveToFirst()) {
        ty = c.getInt(0);
    } else {
        ty = 2;
    }

    c.close();
    db.close();

    return ty;
}