2016-10-13 1 views
0

I SQLdelight verwenden SQL-Code, wieCreate useage Ärger über SQLBrite und SQLdelight

SELECT * FROM CoachService WHERE shop_id in (?) and brand_id = ? 

und ich Abfrage wie zu erstellen:

briteDatabase.createQuery(CoachService.TABLE_NAME, CoachService.GETBYBRANDIDANDSHOPS, "'1','5','11'","2"); 

aber Ergebnis ist leer. Dann ändere ich sqlcode wie

SELECT * FROM CoachService WHERE shop_id in ('1','5','11') and brand_id = ? 

es gibt mir 3 Ergebnis. Warum?

Antwort

0

Wenn Sie einen Abfrageparameter übergeben, wird er von den Android-Bindungen in eine Zeichenfolge umgewandelt. Also, wenn Sie in "'1','5','11'","2" passieren zeigt es oben in der Abfrage als

SELECT * FROM CoachService WHERE shop_id in (''1','5','11'') and brand_id = ?

oder so etwas, wo '1', '5', '11' tatsächlich eine ganze Reihe ist.

+0

Ich weiß, was falsch ist, aber wie kann ich Parameter übergeben? die shop_id ist vielleicht '1', '11' oder '1', '2', '3', '4', danke trotzdem! – paperhs

+0

Sie müssen die richtige Anzahl von Parametern in Ihrem SQLite-Text haben. SELECT * FROM CoachService WHERE Arbeitsplatz_id in (?,?,?) Und brand_id = ' mit ' briteDatabase.createQuery (CoachService.TABLE_NAME, CoachService.GETBYBRANDIDANDSHOPS arbeiten, "1", "5", "11", "2"); ' variable Mengen von Bindeparametern ist nicht möglich. Sie müssen die Abfrage manuell im Code erstellen und die Anzahl der benötigten Parameter hinzufügen. – Anstrong

Verwandte Themen