0

我正在尝试检查有效用户。但我得到以下信息Exception

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;
}

我究竟做错了什么??请帮忙

4

2 回答 2

0

如果用户名是 varchar/text 类型,那么

 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;
        }
于 2013-08-25T09:15:57.320 回答
0

您应该在用户名周围添加引号。您想要与字符串值“ABC”或“ABC”匹配的行,我不记得是哪个引号。如果不加引号,则与名为 ABC 的列匹配。

你应该使用准备语句。这样可以避免很多问题。

于 2013-08-25T09:16:12.853 回答