在这个应用程序中我试图给每种类型的用户提供不同的欢迎信息 所以这是我的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;是第六列
答案 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;
}