Java - SQLite - 如何在 where 子句中使用一列的一组值?

标签 java android sqlite where-in

我想创建这样的查询:

SELECT * FROM my_table WHERE column_1 in (1, 2, 3);

此查询在 SQLite 编辑器中有效,但我想在 Java 中使用它。 我尝试像这样使用它:

String query = "SELECT * FROM mu_table WHERE coumn_1 in ?";
String[] args = {"(1, 2, 3)"};
Cursor c = db.rawQuery(query, args);

但这行不通。出现以下错误:

near "?": syntax error (code 1): , while compiling: SELECT * FROM my_table WHERE column_1 in ?

为什么这是不正确的,正确的方法是什么?

最佳答案

String query = "SELECT * FROM mu_table WHERE coumn_1 in (?, ?, ?)";
String[] args = new String[]{String.valueOf(1), String.valueOf(2), String.valueOf(3)};
Cursor c = db.rawQuery(query, args);

由于需要强制将选择参数作为字符串传递,因此我们可以将其作为

String[]{String.valueOf(1), String.valueOf(2), String.valueOf(3)}

或作为

String[]{"1", "2", "3"}

但它只会作为数字进行比较,而不是字符串。 为了使其作为字符串进行比较,我们必须传递为

String[]{'1','2','3'}

但在当前问题上下文中不需要。

关于Java - SQLite - 如何在 where 子句中使用一列的一组值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27657441/

相关文章:

Java - 从反射中排除父类(super class)字段

java - Eclipse编辑器问题: It only shows one element instead of whole source code!

Android 退出 AsyncTask

perl - SQLite十进制标记

java - 无需模拟器即可访问 SQLite DB?

java - ibm domino 想将大的 xml 字符串保存到富文本字段中,但出现限制错误

java - 将特定的 int 数组转换为 String

android - 将库添加到 eclipse

android - 无法在 preferenceFragment 中膨胀自定义首选项

mysql - 是否有像 mySQL 这样的 SQLite 行大小限制