Android SQLite Update не работает - PullRequest
       3

Android SQLite Update не работает

3 голосов
/ 07 апреля 2011

Я пытаюсь обновить один столбец для любого количества строк.

Вот функция:

public void setAwardsSyncComplete(String[] ids) {

    String inArray = StringUtils.separateCommas(ids);
    db.beginTransaction();

    try {
        ContentValues contentValues = new ContentValues();
        contentValues.put(COL_SYNCED, true);

        int rowsAffected = db.update(TABLE, contentValues, COL_ID + " IN (" + inArray + ")", null);

    } catch (Exception e) {

        DebugLog.e("Error in transaction", e.toString());
    } finally {

        db.endTransaction();
    }
}

Что странно, так это то, что rowAffered возвращает правильно (то есть rowAffect> 0), но значения столбцов остаются нулевыми .

Я пропускаю что-то очень простое здесь?

Спасибо.

Ответы [ 4 ]

8 голосов
/ 07 апреля 2011

Поскольку вы используете транзакции, вам нужно вызвать db.setTransactionSuccessful ();в конце предложения try.Без этого обновление будет отменено.

См. SQLiteDatabase.beginTransaction

Надеюсь, это поможет,

Фил Лелло

2 голосов
/ 07 апреля 2011

Вам нужно позвонить db.setTransactionSuccussful() после db.update, в противном случае любые изменения будут отменены при вызове endTransaction().

1 голос
/ 07 апреля 2011

нет явного логического типа в таблицах sqlite?какой тип данных является столбцом COL_SYNED, который вы пытаетесь обновить?

, и вам нужно будет вызвать db.setTransactionSuccussful ()

0 голосов
/ 07 апреля 2011

Я думаю, что проблема в вашем обновлении ..

Вам нужно зациклить ваш массив и обновить каждый по одному ..

    private int _rowsAffected;

    foreach (var a in inArray)
    {

    _rowsAffected= db.update(TABLE, contentValues, COL_ID + " = (" + a +")", null);

    }

    db.Commit();
    db.setTransactionSuccussful(); 


if(_rowsAffected > 0)
//Success

Привет

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