-1

我正在尝试使用存储在数据库中的值登录到我的应用程序之前验证用户名和密码。

这是我的数据库方法。

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

1 回答 1

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);
}
于 2013-09-24T14:08:42.580 回答