2014-09-23 4 views
0

Так что моя проблема довольно интересная. Я искал ответ и, к сожалению, ничего не помогает. Я разрабатывал приложение и столкнулся с небольшой проблемой. Сегодня мой коллега упомянул, что приложение должно позволить пользователям выбирать конкретную запись из базы данных, а затем редактировать ее. Поэтому я добавил следующий код:Android - SQLite - update()

_dbw.update(TABLE_CHRG_DATA, values, COLUMN_KEY + "=?", new String[] {recordNum}); 

Вопрос заключается в том, что вместо того, чтобы обновить запись, он добавляет новую запись, которую я думал, не должно произойти с обновлением().

В любом случае, мне интересно, что, черт возьми, здесь происходит, и очень понравится какая-то помощь. Я пробовал все, что мог, но код продолжает добавлять новую запись, а не редактировать существующую запись. Я думаю, что просто нужно второе мнение, хех.,

ТИА

Брэд.

+0

@MylesBaker - Спасибо за быстрый ответ. _dbw - это SQLite db. Вот код: окончательный SQLiteDatabase _dbw = this.getWritableDatabase(); , Ive пробовал различные способы настройки строки кода из op, который, я думаю, действительно не должен иметь никакого значения. У меня есть 2 строки кода, которые либо создают новую запись, либо обновляют существующую запись. Во время отладки я вижу, что он обходит вставку и выполняет обновление, но при этом создается совершенно новая запись. Мне интересно, может ли это иметь какое-то отношение к ключу, который проходит мимо, но не видел никаких предупреждений или ошибок. –

+0

Что такое возвращаемое значение '_dbw.update'? Он должен возвращать целое число затронутых записей. Я обеспокоен тем, что у вас может быть несколько экземпляров '_dbw'. В противном случае вы должны подтвердить предложение 'where',' COLUMN_KEY + "=?" '. –

+1

'update()' * не может * добавлять записи (если у вас нет тригера, который делает это). Почему, по вашему мнению, в базе данных есть новая запись? –

ответ

0

Ну ... Вот почему нужно время от времени спать, Лол. Повторив код, я нашел проблему. Чтобы пользователь мог редактировать существующую запись, они перемещаются по записям, а затем редактируют нужную им. Для этого я использую позицию курсора, которая получается, начинается с нуля. Иды в базе данных, однако, начинаются с 1 .. Таким образом, он выполнил обновление только на неправильной записи. Теперь я просто увеличиваю recordNum на 1, и это хорошо. Просто пробежал еще один быстрый тест, и она работает, как ожидалось.

Еще раз спасибо!

Brad.