Android SqLite:选择其他数据库表中存在值的行

时间:2013-12-21 06:59:34

标签: java android string sqlite

我的应用中有两个 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'”。

问题是:我是否必须手动在字符串中的每个项目周围添加撇号,或者是否有其他方法可以使用光标或其他方式来执行此操作,感觉就像我采取了长篇大论的方法。

2 个答案:

答案 0 :(得分:1)

我会用

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

答案 1 :(得分:1)

SQL撇号'被转义为'',因此您可以写:

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

其中''''是撇号中的转义撇号,||连接两个字符串。