2015-03-11 2 views
0

Я проверил stackoverflow для этого, но я до сих пор не нашел ответа, который сработал для меня. Я пытаюсь создать имя пользователя через SQLite и я постоянно получаю эту ошибку из LogCat,Android Sqlite Ошибка синтаксиса new "foo"

03-11 16:19:57.767: E/com.asmaushaheedah.database.DatabaseHelper(25118): SELECT id FROM user WHERE email & password [email protected] hello 03-11 16:19:57.767: E/SQLiteLog(25118): (1) near "foo": syntax error

фрагмент моего класса 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 для входа пользователя - лучший вариант, если нет, может ли кто-нибудь предложить лучший вариант.

ответ

-1

Заменить этот код:

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); 
+0

Теперь я получаю ошибку синтаксиса вблизи «пароль» – user261588

+0

Также я не вижу отборное заявление в Уре код. – user261588

+0

@ user261588, SELECT неявна с запросом метода. Пожалуйста, предоставьте полное сообщение об ошибке – LaurentY

Смежные вопросы