2013-12-21 103 views
0

我有兩個 sqlite數據庫在我的應用程序中。如果特定列的值存在於另一個數據庫的表中,我想從表中選擇所有行。Android SqLite:選擇其他數據庫表中存在值的行

這是我有:

// Code to retrieve the string of items 
Cursor cr = dbA.rawQuery("SELECT GROUP_CONCAT(Code, ',') FROM Favourites", 
       null); 
cr.moveToFirst();  
String Codes = cr.getString(0); // Returns "A, B, D, S" 

// Code to return a table where the rows are in the string 
cr = dbB.rawQuery("SELECT * FROM Favourites WHERE Code IN ('" + Codes + "')", 
       null); 
return cr; 

這會導致一個錯誤,因爲每個代碼變量中的值並不具有其周圍的引號。當它應該是「A」,「B」,「D」,「S」「時,變量是」A,B,D,S「。

問題是:是否必須在字符串中的每個項目周圍手動添加撇號,或者有另一種方法可能使用光標或其他方法來完成它,感覺就像我正在採取冗長的囉嗦方法。

回答

1

SQL撇號'轉義爲'',所以你可以這樣寫:

SELECT GROUP_CONCAT('''' || Code || '''', ',') 

其中''''是一撇撇號逃脫和||連接兩個字符串。

+0

更好,因爲我不需要在第二部分添加撇號,謝謝。 – Reafidy

1

我會用

String Codes = "'" + cr.getString(0).replace(", ","','") + "'"; 
+0

哦,該死的,我覺得我必須讓自己變得複雜。謝謝你的幫助。 – Reafidy

相關問題