Я использую ContentProvider
для общения с базой данных моего приложения, и у меня возникла небольшая проблема.
У меня есть запрос, который немного сложен.Это выглядит примерно так:
String sql =
"select " +
" tblHistory._id _id, " +
" tblHistory.item item, " +
" tblHistory.updated_on updated_on, " +
" (select _id from tblList " +
"where tblList.item = tblHistory.item) list_id, " +
" 1 priority, " +
"from " +
" tblHistory " +
"where " +
" tblHistory.status <> 'STATE_DELETING' and " + selection + " " +
"union " +
"select " +
" tblSearch._id _id, " +
" tblSearch.item item, " +
" -1 updated_on, " +
" (select _id from tblList " +
"where tblList.item = tblSearch.product_name) list_id, " +
" 2 priority, " +
"from " +
" tblSearch " +
"where " +
" not exists (select * from tblHistory " +
"where tblHistory.item = tblSearch.product_name) " +
"order by " +
" priority, _id asc";
c = mDb.rawQuery(sql, null);
Выбор:
String where = "tblHistory.user_id="
+ Integer.toString(intUserId)
+ " and tblHistory.item like '%"
+ strSearch + "%'";
Моя проблема - мои подзапросы.У меня есть ограничение, которое нужно добавить, но нет хорошего способа получить это ограничение по трубе к методу.Мне нужно использовать правильный user_id для подзапросов.
На данный момент, я думаю, у меня есть 2 варианта:
1) Анализировать подстроку user_id
из выбора.
2) Используйте selectionArgs
как хак, чтобы передать "user_id = " + Integer.toString(intUserId)
методу.
Любые другие идеи?
Я должен отметить, что хотя я бы предпочел ничего не делатьхак, я сделал свой ContentProvider
приватным, так как он предназначен только для моего приложения;так что, если мне абсолютно необходимо, я могу.