2013-03-31 8 views
0

Я пытаюсь запросить таблицу SQLite для строки, которая имеет тот же день недели между временем начала и окончания времени следующим образом:SQLite запрос с несколькими аргументами

String whereClause = String.format("%s = '?' AND %s <= '?' %s > '?'", 
      Shift.PROP_DAY_OF_THE_WEEK, Shift.PROP_START_TIME, 
      Shift.PROP_END_TIME); 
    String[] whereargs = new String[] { String.valueOf(dow), time, time }; 
    Cursor cursor = db.rawQuery(whereClause, whereargs); 

Однако я получаю следующее Ошибка Logcat.

03-30 22:46:02.827: E/AndroidRuntime(11507): android.database.sqlite.SQLiteException: near "dayOfTheWeek": syntax error (code 1): , while compiling: dayOfTheWeek = '?' AND startTime <= '?' endTime > '?' 

Я добавил одинарную цитату ('), чтобы окружить вопросительный знак (?). Он также не работает без единой цитаты. Я добавил их, поскольку заявление sql может быть чувствительным к цитированию или нет. Если я ошибаюсь, сообщите мне.

ответ

2

Кроме того недостающего AND, вы поставили строковые разделители вокруг маркеров параметров, которые не позволяют им распознаваться как параметры. '?' - это просто строка, содержащая знак вопроса; для параметра, используйте простой ?:

String.format("%s = ? AND %s <= ? AND %s > ?", ...); 

Кроме того, при использовании rawQuery, вы должны выписывать весь запрос SQL. Чтобы использовать ИНЕКЕ, как вы пытаетесь сделать, вам нужно query:

Cursor cursor = db.query("MyTableName", 
         null, // or column list 
         whereClause, whereargs, 
         null, null, null); 
+0

03-31 12: 24: 35.797: E/AndroidRuntime (18720): android.database.sqlite.SQLiteException: рядом с «dayOfTheWeek»: синтаксическая ошибка (код 1): при компиляции: dayOfTheWeek =? И startTime <=? И endTime>? все еще не работает –

+0

, конечно ... как я буду запрашивать без табло? Я все равно получаю 'Невозможно связать аргумент с индексом 3, потому что индекс выходит за пределы диапазона. У оператора есть 0 параметров. Ошибка, потому что я оставил код, используя «'» из «% s ='?» И% s <= '?' %s > '?' ', Чтобы дать отзыв Паташу. Теперь все исправлено. Большое спасибо. –

0

"%s = '?' AND %s <= '?' %s > '?'"

забыл и между вторым и третьим условиях

"%s = '?' AND %s <= '?' AND %s > '?'"

затем тест, чтобы увидеть, если это необходимо «» или нет

+0

она до сих пор не работает 03-31 12: 29: 38.487: E/AndroidRuntime (19174): android.database .sqlite.SQLiteException: рядом с "dayOfTheWeek": синтаксическая ошибка (код 1): при компиляции: dayOfTheWeek = '?' И startTime <= '?' AND endTime> '?' –

Смежные вопросы