Android Sqlite语法错误“新建”;"富",;
我已经检查了stackoverflow,但是我仍然没有找到一个适合我的答案。我试图通过sqlite创建一个用户登录,我一直从logcat中得到这个错误Android Sqlite语法错误“新建”;"富",;,android,sqlite,login,syntax-error,Android,Sqlite,Login,Syntax Error,我已经检查了stackoverflow,但是我仍然没有找到一个适合我的答案。我试图通过sqlite创建一个用户登录,我一直从logcat中得到这个错误 03-11 16:19:57.767:E/com.asmaushaheedah.database.DatabaseHelper(25118):从电子邮件和密码=?foo@example.com你好 03-11 16:19:57.767:E/SQLiteLog(25118):(1)靠近“foo”:语法错误 我的databasehelper类的一个片
03-11 16:19:57.767:E/com.asmaushaheedah.database.DatabaseHelper(25118):从电子邮件和密码=?foo@example.com你好
03-11 16:19:57.767:E/SQLiteLog(25118):(1)靠近“foo”:语法错误
我的databasehelper类的一个片段是:
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String LOG = DatabaseHelper.class.getName();
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "projectManager";
// Table Names
private static final String TABLE_USER = "user";
private static final String KEY_ID = "id";
// USER Table - column nmaes
private static final String KEY_NAME = "name";
private static final String KEY_SURNAME = "surname";
private static final String KEY_DOB = "dob";
private static final String KEY_NICK = "nick";
private static final String KEY_EMAIL = "email";
private static final String KEY_PASSWORD = "password";
private static final String CREATE_TABLE_USER = "CREATE TABLE "
+ TABLE_USER + "(" + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_NAME
+ " text," + KEY_SURNAME + " text," + KEY_DOB + " DATETIME,"
+ KEY_NICK + " text," + KEY_EMAIL + " text," + KEY_PASSWORD
+ " text" + ")";
public User getUser(String email, String password) {
SQLiteDatabase db = this.getReadableDatabase();
String selectQuery = "SELECT id FROM " + TABLE_USER + " WHERE "
+ KEY_EMAIL + " & " + KEY_PASSWORD+ " =?" + email + password;
Log.e(LOG, selectQuery);
Cursor c = db.rawQuery(selectQuery, null);
if (c != null)
c.moveToFirst();
User td = new User();
td.setID(c.getInt(c.getColumnIndex(KEY_ID)));
td.setName((c.getString(c.getColumnIndex(KEY_NAME))));
td.setSurname(c.getString(c.getColumnIndex(KEY_SURNAME)));
td.setDob((c.getString(c.getColumnIndex(KEY_DOB))));
td.setNick(c.getString(c.getColumnIndex(KEY_NICK)));
td.setEmail(c.getString(c.getColumnIndex(KEY_EMAIL)));
td.setPassword(c.getString(c.getColumnIndex(KEY_PASSWORD)));
return td;
}
我不确定使用sqlite进行用户登录是否是最好的选择,如果不是,有人能推荐一个更好的选择吗 替换此代码:
String selectQuery = "SELECT id FROM " + TABLE_USER + " WHERE "
+ KEY_EMAIL + " & " + KEY_PASSWORD+ " =?" + email + password;
Log.e(LOG, selectQuery);
Cursor c = db.rawQuery(selectQuery, null);
通过这个:
String[] columns = {KEY_ID};
String where = KEY_EMAIL+"=? AND " + KEY_PASSWORD + "=?";
String[] whereArgs = {email, password};
Cursor cursor = db.query(TABLE_USER,
columns,
where, whereArgs, null, null, null);
@user261588,SELECT是隐式的,带有方法查询。请提供完整的错误信息我在你的代码中的key_电子邮件和key_密码之间添加了一个“&”,我不再有那个错误了。谢谢