2011-05-09 11 views
8

Ben buna benzer sql dizesi aşağıdaki ile rawQuery() yaşıyorum: benim arama bir joker dahil etmekAndroid: SQL rawQuery joker ile (%)

selectionArgs = new String[] { searchString }; 
Cursor c = db.rawQuery("SELECT column FROM table WHERE column=?", selectionArgs); 

ama şimdi var, bu yüzden benim sorgu şöyle görünür böyle:

sorgu tek tırnak içerdiğinde sütun LIKE 'aranacak%'

Ama şu SQLite İstisna atılır FROM tablo

SEÇ sütun: android.database.sqlite.SQLiteException: bind or column index out of range

Bir rawQuery öğesini wildcard elemanları içeren bir SQL sorgusu içinde selectionArgs ile nasıl çalıştırabilirim?

cevap

23

Sen selectionArgs kendisini için % eklemek zorunda:

selectionArgs = new String[] { searchString + "%" }; 
Cursor c = db.rawQuery("SELECT column FROM table WHERE column=?", selectionArgs); 

Not: hala joker karakter olarak çalışmak searchString dizede Buna göre % ve _!

+0

Teşekkür 1. – Shraddha

17

Sqlite çerçevesi otomatik olarak tek tırnak işaretlerini koyar? içsel karakter.

String [] selectionArgs = {searchString + "%"}; 
Cursor c; 
// Wrap the next line in try-catch 
c = db.rawQuery("SELECT column FROM table WHERE like ?", selectionArgs); 

İşte bu kadar.

0

Brad Hein en ve Mannaz çözümü için beni işe yaramadı, ama bu yaptı: kısa ve doğru cevabı

String query = "SELECT column FROM table WHERE column=%s"; 
String q = String.format(query, "\""+searchString + "%\""); 
Cursor c = db.rawQuery(q, null);