2014-01-14 2 views
-1

Я использую следующий код, чтобы обновить элемент в моей SQListe базе данных:SQLite ошибки при обновлении: индекс вне диапазона

ContentValues values = new ContentValues(); 
    values.put(FIELD_NAME, place.getName()); 
    values.put(FIELD_LAST_SAVE_TIMESTAMP, System.currentTimeMillis()/1000L); 

    int affected_rows = db.update(TABLE_PLACES, values, FIELD_ID + " = '?'", 
      new String[] { place.getId() }); 

Я получаю следующее сообщение об ошибке:

01-14 14:50:52.261: E/AndroidRuntime(26535): FATAL EXCEPTION: main 
01-14 14:50:52.261: E/AndroidRuntime(26535): 
android.database.sqlite.SQLiteBindOrColumnIndexOutOfRangeException: bind or column index out of range: handle 0x27984c8 

У вас есть идея?

BTW, это трудно отлаживать, потому что я не могу получить окончательный оператор sql, показанный. Есть ли способ включить подробный журнал?

+0

Мне очень интересно, почему такой нормальный вопрос получает downvote. Почему бы вам не написать комментарий? – ercan

ответ

2

Не следует указывать ?. Удалите '', поэтому он не рассматривается как литерал '?', а как заполнитель для литералов.

Исключение говорит о том, что число ? s и bind args не совпадают.

+0

Ну, спасибо! Но идентификатор возвращался с place.getId() - буквенно-цифровой. Я должен положить его в кавычки. Нужно ли мне удвоить кавычки? Я имею в виду ''? '' Вместо '?' – ercan

+0

Не нужно указывать себя при использовании '?'. – laalto

+0

О, хорошо. Таким образом, цитирование обрабатывается самой функцией update(). Я понимаю. Благодаря! – ercan

-1

может быть значение (System.currentTimeMillis()/1000L) превышает максимальное значение FIELD_LAST_SAVE_TIMESTAMP

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