2014-04-16 111 views
2

目前在我的SQLite数据库中有一个问题,当我尝试运行一个比较时,我得到以下错误: 引起:android.database.sqlite.SQLiteException:在“@hotmail”附近:语法错误:,在编译:SELECT DISTINCT _id,用户名,密码FROM用户表WHERE [email protected]密码= shshshAndroid SQLite数据库异常

我的搜索是:

公共布尔getUserNameAndPassword(用户名字符串,字符串密码)抛出的SQLException {

Cursor mCursor = 
      db.query(true, TABLE_NAME, new String[] {KEY_ROWID,USER, 
        PWD},USER + "=" + userName + "AND password=" + Password, null, 
        null, null, null, null); 

    if (mCursor.getCount() > 0) 
    { 
     return true; 
    } 
    return false;} 

我试图运行它:

boolean signIn = dbHelper.getUserNameAndPassword(mEmail, mPassword); 
     if (signIn){ 
      Toast.makeText(getBaseContext(),"Sign in successful",Toast.LENGTH_LONG).show(); 
     }else {Toast.makeText(getBaseContext(),"Sign in failed",Toast.LENGTH_LONG).show();} 

在此先感谢!

+0

这就是为什么你应该使用'selectionArgs'和''? – njzk2

回答

1

SELECT DISTINCT _id, userName, password FROM userTable WHERE [email protected] password=shshsh

你忘userNameAND之间的空间。

此外,请看John对参数化查询的回答。

2

你应该使用参数化查询,而不是仅仅在用户名和密码变量追加,见下面的例子:

Cursor mCursor = 
     db.query(true, TABLE_NAME, new String[] {KEY_ROWID,USER, 
       PWD},USER + " = ? AND password = ?", new String[]{ userName, Password }, 
       null, null, null, null); 

if (mCursor.getCount() > 0) 
{ 
    return true; 
} 
return false;} 
+1

你也应该从查询中删除附加的密码:) – nhaarman

+0

嗨,John,感谢您的及时回应,我已经改变了你的说法,但我仍然在: 引起:android.database.sqlite.SQLiteException:near “example”:语法错误:编译时:SELECT DISTINCT _id,userName,password FROM userTable WHERE userName =? AND password =?example – user3535757

+0

我没有看到单词'example'进入查询的位置。 –

0

你忘了一个空间,现在就来试试:

Cursor mCursor = 
      db.query(true, TABLE_NAME, new String[] {KEY_ROWID,USER, 
        PWD},USER + "='" + userName + "' AND password='" + Password + "'", null, 
        null, null, null, null); 

    if (mCursor.getCount() > 0) 
    { 
     return true; 
    } 
    return false;} 

编辑:另外,你应该考虑使用John提出的参数化查询。

+0

嗨,那里,你的解决方案我得到以下错误: 引起:android.database.sqlite.SQLiteException:“@hdjsj”附近:语法错误:,编译时:SELECT DISTINCT _id,userName,密码FROM userTable WHERE userName = [email protected] AND password = sjsjsj – user3535757

+0

看我的编辑...现在我认为它应该工作 – Rafag

0

试试这个:

Cursor mCursor = 
      db.query(true, TABLE_NAME, new String[] {KEY_ROWID,USER, 
        PWD},USER+"='"+userName+"' AND password='"+Password+"'", null, 
        null, null, null, null);