如何进行登录查询?

时间:2012-02-29 21:01:28

标签: java android mysql sqlite

当我使用此代码时:

String sql = "SELECT COUNT(*) FROM " + MySQLiteHelper.TABLE_REGISTER + 
  " where email="+userInfo.getUsername()+" && password="+userInfo.getLoginPass();
SQLiteStatement statement = database.compileStatement(sql);
long count = statement.simpleQueryForLong();

我收到此错误消息:

02-29 20:36:27.864: E/AndroidRuntime(461): Caused by: android.database.sqlite.SQLiteException: no such column: abcdefg: , while compiling: SELECT COUNT(*) FROM register where email=abcdefg and password=aaaaa
02-29 20:36:27.864: E/AndroidRuntime(461):  at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
02-29 20:36:27.864: E/AndroidRuntime(461):  at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:91)
02-29 20:36:27.864: E/AndroidRuntime(461):  at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:64)
02-29 20:36:27.864: E/AndroidRuntime(461):  at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:80)
02-29 20:36:27.864: E/AndroidRuntime(461):  at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:36)
02-29 20:36:27.864: E/AndroidRuntime(461):  at android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1145)
02-29 20:36:27.864: E/AndroidRuntime(461):  at com.lifeApp.RegisterProcessing.loginUser(RegisterProcessing.java:173)

我该如何解决?

2 个答案:

答案 0 :(得分:1)

您收到的错误是由于sql语句缺少引号“'”。无论如何,使用这样的准备语句没有任何意义。您必须稍后绑定参数。试试这个(我没有尝试过,所以我为任何错误道歉):

String sql = "SELECT COUNT(*) FROM " + MySQLiteHelper.TABLE_REGISTER + " where email= ? and password= ?";
SQLiteStatement stmt = database.compileStatement(sql);
stmt.bindString(1, userInfo.getUsername());
stmt.bindString(2, userInfo.getLoginPass());
stmt.execute();

答案 1 :(得分:0)

字符串文字应该在单引号内。

 String sql = "SELECT COUNT(*) FROM " + MySQLiteHelper.TABLE_REGISTER + " where email= '"+userInfo.getUsername()+"' && password= '"+userInfo.getLoginPass()+"'";
相关问题