1

I have a query in which I have multiple In statements.

Query


select TCF.Car_Make,TCF.Car_Model,TCF.Car_Ver,Prices,Rear_Parking_Sensors,Airbags,Engine_Immobilizer,Power_Windows,Integrated_In_Dash_Music_System,Steering_Adjustment from Car_Feature AS TCF JOIN Car_Spec AS TCS where TCF._id=TCS._id and TCS.Prices between '0' and '80,00,00,000' and TCS.Fuel_Type IN("Petrol","Diesel","null","null") and TCF.Car_Make IN("null","null","null","null","null","null","null","Force Motors","Ford","Hindustan Motors","Honda","null","null","Lamborghini","Land Rover","null","null","null","null","null","null","null","null","null","null","null","null","null","null","null")


My Query works perfectly fine when i execute it in Sqlite browser.

But when I try to execute the same query in my helper class using db.execSQL() statement it doesn't work.

My Logcat shows error

07-31 05:06:03.085: E/AndroidRuntime(334): Caused by: android.database.sqlite.SQLiteException: unknown error: Queries cannot be performed using execSQL(), use query() instead.

It says to use db.query() statement.

The confusion is how to i use IN statement in db.query()

Can anyone please help me.

4

1 回答 1

2

该文档指出,您不能使用 SQLiteDatabase.execSQL() 来执行 Select 或任何其他返回数据的 SQL 语句。从 SQLiteDatabase.execSQL() 文档:

执行不是 SELECT 的单个 SQL 语句或任何其他返回数据的 SQL 语句。它无法返回任何数据(例如受影响的行数)。相反,我们鼓励您尽可能使用 insert(String, String, ContentValues), update(String, ContentValues, String, String[]) 等。

编辑:您可以使用 rawQuery() 来形成参数化查询,如下所示:

String query = "SELECT * FROM table"
+ " WHERE name IN ("+ createPlaceholders(names.length) +")";
Cursor c = db.rawQuery(query, names);

在这种情况下,我们假设 createPlaceholders() 返回一个包含 names.length 逗号分隔的“?”的字符串。

于 2013-07-31T06:11:15.060 回答