2013-08-25 39 views
0

我正在嘗試檢查有效的用戶。但我發現了以下Exception在sqlite中檢查有效的用戶名和密碼時得到異常

no such column: ABC(Code 1):, while compiling: SELECT _id, username, password 
FROM MyTable1 WHERE username=ABC 

的代碼如下:

public int checkUser(String userName, String password) { 
    int check = -1; 
    int id = 2; 
    String psword = new String(); 

    Cursor cursor = database.query(TABLE_NAME, allColumns, COLUMN_USER_NAME + "=" + userName, null, null, null, null); 
    cursor.moveToFirst(); 
    Log.v(TAG, "After CURSOR!!"); 
    psword = cursor.getString(cursor.getColumnIndex(COLUMN_PASSWORD)); 
    Log.v(TAG, "pasword: " + psword); 
    if (psword.equals(password)) { 
     check = 1; 
    } 
    return check; 
} 

我在做什麼錯?請幫助

+0

您是否更改過密碼 –

+0

您是否解決了您的問題? –

回答

0

如果用戶名是爲varchar /文本類型,然後

Cursor cursor = database.query(TABLE_NAME, allColumns, COLUMN_USER_NAME 
      + "=" + '"+userName+"', null, null, null, null); 

這是樣品登錄功能

public boolean checkUser(String username, String password) throws SQLException 
    { 
    String whereClause = " USERNAME = '"+userName+"' "; 

    try { 
     open();// dbopen 
     Cursor cursor = db.query(TABLE_NAME, allColumns,whereClause, null, null, null, null); 
     }catch(Exception e){ 
      } 
} 

public boolean checkUser(String username, String password) throws SQLException 
    { 
     Cursor mCursor = database.rawQuery("SELECT * FROM " + DATABASE_TABLE + " WHERE username=? AND password=?", new String[]{username,password}); 
     if (mCursor != null) { 
      if(mCursor.getCount() > 0) 
      { 
      return true; 
      } 
     } 
     return false; 
     } 
+0

名稱類型是文本。它的SQLite數據庫。 – Ankita

+0

所以用戶名參數將在單qoute –

+0

非常感謝...這解決了我的問題! – Ankita

0

您應該圍繞用戶名添加引號。你想要匹配字符串值「ABC」或「ABC」的行我不記得哪些引號。如果您不放置引號,則與名爲ABC的列匹配。

而你應該使用準備語句來代替。這會避免你很多問題。