2013-09-24 37 views
-1

我想在使用存儲在數據庫中的值登錄到我的應用程序之前驗證用戶名和密碼。在Android中的用戶名和密碼驗證

這是我的數據庫方法。

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

和你的問題是什麼? – njzk2

+0

你確定你的意圖是正確創建的嗎?我認爲'Intent in = new Intent(MainActivity.this,LoginActivity.class);'應該是'Intent in = new Intent(LoginActivity.this,MainActivity.class);''因爲你想在LoginActivity之後進入MainActivity(我在這裏假設LoginActivity是第一個在屏幕上顯示的活動) –

+0

這是什麼問題? – Thalaivar

回答

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

非常感謝您的幫助。我只在我的db方法中添加了c1.moveToFirst()。問題解決了..再次感謝.. – dilip