我尝试使用存储在数据库中的值登录我的应用程序之前验证用户名和密码。
这是我的数据库方法。
public boolean GetData2(String uname, String pass) {
boolean result;
Cursor c1 = null;
String query = "SELECT * FROM " + TABLE_MIS2 + "";
SQLiteDatabase dbc = this.getReadableDatabase();
c1 = dbc.rawQuery(query, null);
String u = c1.getString(c1.getColumnIndex(DatabaseHandler.KEY_USERID));
String p = c1.getString(c1.getColumnIndex(DatabaseHandler.KEY_PWD));
if ((uname.equals(u))&&(pass.equals(p))) {
result = true;
} else {
result = false;
}
return result;
这是我要检查的条件。
boolean res = dbh.GetData2(s1, s2);
if(res == true) {
Intent in=new Intent(MainActivity.this,LoginActivity.class);
startActivity(in);
}
else {
Toast.makeText(MainActivity.this, "Login failed", Toast.LENGTH_SHORT).show();
}
答案 0 :(得分:0)
有几件事......首先,你不是在调用c1.moveToFirst()。其次,除非你只有一个用户,否则你很可能永远无法得到你正在寻找的结果,因为你只是试图查看返回的第一条记录。
更好的可能是:
public boolean GetData2(String uname, String pass)
{
SQLiteDatabase dbc = this.getReadableDatabase();
Cursor c1 = dbc.query(
TABLE_MIS2,
null,
DatabaseHandler.KEY_USERID + "=? AND " + DatabaseHandler.KEY_PWD + "=?",
new String[] { uname, pass },
null,
null,
null);
return (c1.getCount() >= 1);
}