Ошибка при обновлении таблицы в Sqlite - PullRequest
0 голосов
/ 28 марта 2012

При попытке обновить запись для одной из моих записей я использую этот код

    private void UpdateCattleRecord(UpdateCattleRecord updateRecord){
             mDB.beginTransaction();
             String where = "_ID=";
             String[] RecordToUpdate = {Cattle._ID};
             Toast.makeText(this,"Updating Animal "+ RecordToUpdate, Toast.LENGTH_LONG).show();
             try {
                    ContentValues CattleFieldsToUpdate = new ContentValues();
                    CattleFieldsToUpdate.put(Cattle.CATTLE_ANIMALID,updateRecord.getCattleName());
                    CattleFieldsToUpdate.put(Cattle.CATTLE_TYPE, updateRecord.getCattleType());
                    CattleFieldsToUpdate.put(Cattle.CATTLE_LOCATION, updateRecord.getCattleLocation());
                    CattleFieldsToUpdate.put(Cattle.CATTLE_DOB, updateRecord.getCattleDob());
                    CattleFieldsToUpdate.put(Cattle.CATTLE_DAM, updateRecord.getCattleDam());
                    CattleFieldsToUpdate.put(Cattle.CATTLE_SEX, updateRecord.getCattleSex());
                    mDB.update(Cattle.CATTLE_TABLE_NAME,CattleFieldsToUpdate, where, RecordToUpdate);
                    mDB.setTransactionSuccessful();
              } finally {
                 mDB.endTransaction();
             }
    }

Мой журнал показывает

Возвращена база данных тегов sqlite: код ошибки = 1, msg = near "=": синтаксическая ошибка

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

03-27 15: 15: 29.291: E / База данных (12011): ошибка обновления date_of_birth = 27 марта 2012 г. Животный тип = Пол теленка = F местоположение = Восточная плотина = 601 animal_id = 601A с использованием ОБНОВЛЕНИЯ крупного рогатого скота SET date_of_birth = ?, animaltype = ?, sex = ?, location = ?, dam = ?, animal_id =? ГДЕ _ID =

У меня явно есть проблема со значением _ID, но я не могу найти его. Может кто-нибудь указать, где моя синтаксическая ошибка?

Обновление

Проблема возникла из-за того, что я не смог передать фактическое значение записи (_ID), которую я хотел обновить. Как только я передал это в качестве параметра моей функции updaterecords, обновление пошло в соответствии с графиком.

Спасибо за ввод, это помогло мне сузить то, что я делал неправильно.

Ответы [ 2 ]

0 голосов
/ 28 марта 2012

попробуй:

 mDB.update(Cattle.CATTLE_TABLE_NAME,CattleFieldsToUpdate, "_ID="+Cattle._ID, null);

попробуй:

mDB.update(Cattle.CATTLE_TABLE_NAME,CattleFieldsToUpdate, "_ID="+updateRecord.getId(), null);
0 голосов
/ 28 марта 2012

Проверьте создание базы данных, возможно, у вас есть столбец с именем _id (хотя вы называете его _ID, его имя _id), а не _ID:

String where = "_id= ?"; // ? represent the value from the selection arguments String array

или лучше:

String where = Cattle._ID + "= ?";

Edit: Вы указали аргумент выбора where:

String[] RecordToUpdate = {Cattle._ID};

вы, вероятно, хотите вставить туда какой-нибудь идентификатор, который вы откуда-то получили (из записи, которую вы хотите обновить, long номер), прямо сейчас вы делаете:

WHERE _ID = _ID (or _id)

и это не удастся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...