2017-07-13 70 views
0

所以我需要在我的数据库中搜索TABLE。SQLite - 在条款中使用LIKE子句

我创建一个SQLite查询,像这样

String selection = COLUMN_1 + " LIKE ? AND " + COLUMN_2 + " ?= AND " + COLUMN_3 + " ?="; 
String selectionArgs[] = {"%" + value1 + "%", value2 , value3 }; 

Cursor cursor = db.query(TABLE_1, null, selection, selectionArgs, null, null, null); 

我有以下错误

SQLiteException: near "?": syntax error (Sqlite code 1): , while compiling: SELECT * FROM TABLE_1 WHERE COLUMN_1 LIKE ? AND COLUMN_2 ?= AND COLUMN_3 ?=, (OS error - 2:No such file or directory) 

尝试许多不同的变化和研究,我放弃了后,写了rawQuery

String query = "SELECT * FROM " + ITEMS_CONTENT_TABLE + " WHERE " + ITEM_NAME + " LIKE '%" + name + "%' AND " + BASE_CATEGORY_NAME + " = '" + baseCategoryName + "' AND " + BASE_CATEGORY_SRC_PATH + " = '" + baseCategorySrcPath + "';"; 

Cursor cursor = db.rawQuery(query , null); 

无缝工作!

我的问题是为什么前者不工作?如果确实是语法错误,那么它在后面的例子中也不应该起作用。

+0

变化如下 字符串选择= COLUMN_1 + “怎么样?和” + COLUMN_2 +“= ?AND“+ COLUMN_3 +”=?“; –

+0

@GiacomoLai该死......我不相信我错过了很多的感谢。我花了2个小时在我的脑海里疯了。将其添加为答案,我会接受它。 – Abbas

+0

好的谢谢:) –

回答

2

更改查询如下

String selection = COLUMN_1 + " LIKE ? AND " + COLUMN_2 + " =? AND " + COLUMN_3 + " =?" 
0

下面的查询工作正常在我的情况..

Cursor c = db.rawQuery("Select ConsAcNo From FieldUtilityData Where ConsAcNo like '%" + txtConsAcNo.getText() + "%' and ProjectNo = '" + gp.city + "' and IsCompleted = 'N' and ConsAcNo not in (SELECT CONS_ACCOUNT_NO FROM FieldTestDataFinal) Limit 15", null);