SQLite .query()方法,WHERE子句只接受双引号字符串

sam*_*wei 13 sqlite android

我有变量:

String owner="Mike";
String[] columns ={"quantity", "price","owner"}
Run Code Online (Sandbox Code Playgroud)

我的光标正试图搞定
Cursor findEntry = db.query("sku_table", columns, "owner="+owner, null, null, null, null);

我收到错误没有这样的列错误

android.database.sqlite.SQLiteException: no such column: owner: , while compiling: SELECT quantity, price, owner, FROM sku_table WHERE owner=Mike
Run Code Online (Sandbox Code Playgroud)

但是如果我接受这个查询:

SELECT quantity, price, owner, FROM sku_table WHERE owner=Mike
Run Code Online (Sandbox Code Playgroud)

并添加""到Mike,并在sqlite浏览器中测试以执行查询,我确实得到了回行.工作查询如下所示:

SELECT quantity, price, owner, FROM sku_table WHERE owner="Mike"
Run Code Online (Sandbox Code Playgroud)

有人可以放弃一些有关如何合并双引号的见解吗?除了使用"谢谢!

War*_*ith 83

抱歉,这正是您应该使用该方法提供的内容的原因!@Leandros和@Jake正在帮助完全错误的方向!对不起,说...

您应该使用的唯一解决方案是:

Cursor findEntry = db.query("sku_table", columns, "owner=?", new String[] { owner }, null, null, null);
Run Code Online (Sandbox Code Playgroud)

ps:是的,我投了两个答案,因为它们可能有效,但提供了一个不应该使用的解决方案.

更新:

如果您需要多个where条件,只需像在普通查询中那样添加它

Cursor findEntry = db.query("sku_table", columns, "owner=? and price=?", new String[] { owner, price }, null, null, null);
Run Code Online (Sandbox Code Playgroud)

元素?new String[] {...}元素的顺序必须相同!