2011-08-10 13 views
10

Bir içerik sağlayıcısı için IN yan tümcesi kullanmak mümkün müdür? i (?) çıkarıp sadece bir hata alıyorum ? kullanırsanızAndroid içerik sağlayıcı sorgu IN cümlesi

Şu anda

cursor = contentResolver.query(CONTENT_URI, PROJECTION, "field IN (?)", new String[] { argsBuilder.toString() }, null); 

kullanıyorum.

İmlecimde 0 sayısı alıyorum.

El ile yazıp sqlite3'te sorguyu yürütürse çalışır.

Yardım?

cevap

21

IN işlecini kullanırken, selectionArgs dizininizde verdiğiniz argüman başına bir virgülle ayrılmış bir ? olması gerekir. Örn .:

String[] selectionArgs = {"red", "black"}; 
String selection = "color IN (?, ?)"; 

aşağıdaki alır doğru sayım ve uygun args:

int argcount = 2; // number of IN arguments 
String[] args = new String[]{ 1, 2 }; 
StringBuilder inList = new StringBuilder(argcount * 2); 
for (int i = 0; i < argcount; i++) { 
    if(i > 0) { 
     inList.append(","); 
    } 
    inList.append("?"); 
} 
cursor = contentResolver.query(
    CONTENT_URI, 
    PROJECTION, 
    "field IN (" + inList.toString() + ")", 
    args, 
    null); 
+0

teşekkürler! IN'nin desteklenip desteklenmediğini ya da bunu böyle yapmam gerektiğini bilmek istedim. – dnkoutso

+0

Bu benim için çalışmıyor. 0 sayı imleci alıyorum. –

+0

Her şey basittir. Teşekkür ederim, – RexSplode

1

senin argümanlar sadece sayılar varsa, bu da iyi çalışır:

Iterable args = ...; // any array, list, set, ... 
cursor = contentResolver.query(CONTENT_URI, PROJECTION, "field IN (" + TextUtils.join(",", args) + ")", null, null);