2016-04-02 2 views
-2

Так им пытаются построить метод поиска для моей андроид приложения и я держать работает в этой ошибкиSQLite запросов Exception Android Studio Синтаксис Код ошибки 1

android.database.sqlite.SQLiteException: near "Prefect": syntax error (code 1): 
while compiling: SELECT * FROM Person WHERE name = Ford Prefect 

Это метод я есть, что выполнение запроса

public Cursor findUser(String uName) 
{ 
    Cursor res = myDatabase.query("Person WHERE name = "+uName+"", 
             null,null,null,null,null,null); 

    return res; 
} 

И струнный uName приходит от этого метода

public void onClick(View v) 
{ 
    EditText uNameField = (EditText)findViewById(R.id.editText); 
    String userName=uNameField.getText().toString(); 

    switch (v.getId()) 
    { 
     case R.id.button: 
      Intent myIntent = new Intent(FindUser.this, 
        Results.class); 
      myIntent.putExtra("uName", userName); 
      startActivity(myIntent); 
      break; 
    } 

} 

Может кто-нибудь помочь с моим im получить эту ошибку ?? все кажется прекрасным, я просто не могу понять, почему он останавливается на фамилии. Но имена пользователей правильно отформатированы так, как «Форд Префект»

+2

Вам нужны цитаты вокруг строк: '.... WHERE name = 'Ford Prefect''. BTW использовать Подготовленные заявления - они справляются с этим для вас. –

+0

Я уже не сталкивался с этим раньше, но, глядя кратко, это будет что-то вроде этих строк .... 'SQLiteDatabase db = dbHelper.getWritableDatabase(); SQLiteStatement stmt = db.compileStatement ("SELECT * FROM Person WHERE uName =?"); stmt.bindString (1, "userName"); stmt.execute(); ' –

+0

Да, это было бы именно то, что –

ответ

1

При передаче значений должна быть одинарная кавычка .ie, ваш запрос должен быть передан таким образом «* SELECT * FROM Person WHERE name = 'Ford Prefect' ; * ". Ниже я отредактировал ваш вопрос.

public Cursor findUser(String uName) { 
    Cursor res = myDatabase.query("Person WHERE name = '"+uName+"';", 
             null,null,null,null,null,null); 
    return res; 
} 
+0

С этими поправками теперь я получаю эту ошибку ' android.database.CursorIndexOutOfBoundsException: запрашивается индекс 0 с размером 0' –

+0

@facesmie :: Перед повторением курсор. вам пришлось включить два условия if: if (cursor! = null) {if (cursor.moveToFirst()) {} '. Вы это сделали? – Jeevanandhan

+0

Ahh, поэтому поместите мои действия с этим оператором if, чтобы предотвратить исключения exofbounds –

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