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

时间:2012-02-07 23:09:04

标签: android sqlite

我有变量:

String owner="Mike";
String[] columns ={"quantity", "price","owner"}

我的光标正试图获得 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

但如果我接受这个问题:

SELECT quantity, price, owner, FROM sku_table WHERE owner=Mike

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

SELECT quantity, price, owner, FROM sku_table WHERE owner="Mike"

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

6 个答案:

答案 0 :(得分:83)

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

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

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

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

更新

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

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

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

答案 1 :(得分:2)

SELECT quantity, price, owner, FROM sku_table WHERE owner='Mike'这是正确的SELECT。你忘了''(单引号)

答案 2 :(得分:1)

Cursor findEntry = db.query("sku_table", columns, "owner='"+owner+"'", null, null, null, null);

答案 3 :(得分:1)

 public Cursor show_vol(String  vol,String bk,String hadnu)
           { 
              SQLiteDatabase db = this.getReadableDatabase();
              String[] columns ={"hadith"};//colums name that you select

              Cursor res = db.query("volume2", columns, "hadithno=?", new String[] { hadnu }, null, null, null);

 //volume2 is table name  and hadithno is colume name  l
//select hadith from volume2 where hadithno=hadnu  //working like s

 1. List item

              return res;
           }

答案 4 :(得分:0)

我知道这是一个老问题,但您也可以这样做:

Cursor findEntry = db.query("sku_table", columns, "owner=\'"+owner+"\'", null, null, null, null);

我刚刚在我的应用中完成了它并按预期工作。

杰克的答案是相似的,但在'

之前没有\可能无法奏效

答案 5 :(得分:0)

最简单的方法是使用SELECT col1,col2 FROM table_name WHERE col ='什么' ;就像 Leandros 所说,我的问题是单引号,thnx