我的应用中有两个 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'”。
问题是:我是否必须手动在字符串中的每个项目周围添加撇号,或者是否有其他方法可以使用光标或其他方式来执行此操作,感觉就像我采取了长篇大论的方法。
答案 0 :(得分:1)
我会用
String Codes = "'" + cr.getString(0).replace(", ","','") + "'";
答案 1 :(得分:1)
SQL撇号'
被转义为''
,因此您可以写:
SELECT GROUP_CONCAT('''' || Code || '''', ',')
其中''''
是撇号中的转义撇号,||
连接两个字符串。