У меня есть два запроса: один с ?
, который я заменю с помощью аргументов выбора, а другой, где весь запрос был подготовлен в виде строки. Запрос с ?
, похоже, не возвращает никакого результата и никакой ошибки.Параметрированный запрос sqlite для Android не работает?
String query1 = "strftime('"
+ Constants.SQLITE_DATABAE_STRFORMAT
+ "', "+ COLUMN_NAME_DATE_CREATED +") BETWEEN strftime('"
+ Constants.SQLITE_DATABAE_STRFORMAT + "', '"+ sdf.format(fromDate) +"') AND strftime('"
+ Constants.SQLITE_DATABAE_STRFORMAT + "', '"+ sdf.format(toDate)+"')";
Запрос выше возвращает результаты, как ожидалось.
String query2 = "strftime('"
+ Constants.SQLITE_DATABASE_STRFORMAT
+ "', "+ "?" +") BETWEEN strftime('"
+ Constants.SQLITE_DATABASE_STRFORMAT + "', "+ "?" +") AND strftime('"
+ Constants.SQLITE_DATABASE_STRFORMAT + "', "+ "?"+")";
String[] selectionArgs = new String[] {
COLUMN_NAME_DATE_CREATED,
sdf.format(fromDate), sdf.format(toDate) };
Запрос 2 выше не возвращает результатов. cursor
создается, как показано ниже, с той разницей, что для запроса 1 selectionArgs
установлен в пустой массив.
Cursor cursor = queryBuilder.query(database.getReadableDatabase(),
projection, selection, selectionArgs, null, null, sortOrder);