Я использую ContentProvider
, чтобы говорить с базой данных моего приложения, и я ' m столкнулся с небольшой проблемой.
У меня есть запрос, который немного сложнее. Это выглядит примерно так:
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
частным, поскольку он предназначен только для использования моим приложением; так что, если понадобится, могу.