2016-04-02 23 views
-2

YaniSQLite Sorgu İstisna Android Studio Sözdizimi Hata kodu 1

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

Bu yöntem ben bu sorguyu

çalıştıran var benim Android uygulamanız için bir arama yöntemi inşa etmeye çalışıyoruz im ve ben bu yanılgıya yayınlanmaya devam
public Cursor findUser(String uName) 
{ 
    Cursor res = myDatabase.query("Person WHERE name = "+uName+"", 
             null,null,null,null,null,null); 

    return res; 
} 

Ve Dize 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; 
    } 

} 

kimse ile yardımcı olabilir bu yöntem geliyor benim Bu hatayı alıyorum? her şey iyi görünüyor, sadece soyadı neden durduğunu anlayamıyorum. Ancak kullanıcı adları, "Ford Prefect"

+2

Dizeler etrafında tırnaklara ihtiyacınız var: '.... WHERE name = 'Ford Prefect'. BTW Hazırlanmış İfadeleri Kullan - bunlar sizin için halleder. –

+0

Daha önce bunlara rastlamamıştım, ama kısaca bakınca bu satırlar boyunca bir şey olurdu .... 'SQLiteDatabase db = dbHelper.getWritableDatabase(); SQLiteStatement stmt = db.compileStatement ("SELECT * FROM Kişi NEREDE =?"); stmt.bindString (1, "userName"); stmt.execute(); ' –

+0

Evet tam o değişiklikle o –

cevap

1

gibi doğru biçimde biçimlendirilmiş. Değerleri aktarırken tek tırnak işareti olmalıdır. Bu nedenle, sorgunuz bu şekilde iletilmelidir "* SELECT * FROM Kişi WHERE name = 'Ford Prefect' ; * ". Aşağıda sorunuzu düzelttim.

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

ben şimdi bu hatayı alıyorum olurdu ' android.database.CursorIndexOutOfBoundsException: Dizin 0 0' –

+0

@facesmie boyutunda, istenilen :: yineleme önce Kürsör. Eğer iki koşul varsa, eğer 'if (imleç! = null) {if (cursor.moveToFirst()) {}'. Bunu yaptınmı? – Jeevanandhan

+0

Ahh, bu yüzden eylemlerimi outofbounds istisnalarını önlemek için –

İlgili konular