繁体   English   中英

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

[英]Android SqLite: Select Rows Where Values Exists in Another Database Table

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

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

我会用

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

SQL撇号'被转义为''所以你可以写:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM