Не удается обновить несколько строк в команде обновления базы данных Sqlite в Android - PullRequest
4 голосов
/ 30 декабря 2010

Я столкнулся с проблемой здесь.Я пытаюсь массово обновить свою таблицу, т.е. пытаюсь обновить несколько строк в базе данных.Обновление просто.Мне просто нужно установить значение столбца в 1, который фактически используется в качестве флага в приложении.Поэтому я хочу установить значение 1 и в предложении where я даю строковый массив всех идентификаторов, где я хочу его установить.Но проблема в том, что он дает мне «android.database.sqlite.SQLiteException: bind или индекс столбца вне диапазона:».Однако, когда одно значение предоставляется либо в виде строки, либо в виде строкового массива, обновление работает нормально.

- это запрос

db.update( tableName, cv, Z_ID + "=?", items );

, где элементы имеют тип String []

пожалуйста, скажите мне, что мне не хватает?

С уважением

Фахад Али Шейх

1 Ответ

4 голосов
/ 04 января 2011

Я думаю, что это не сработает, основываясь на одной строке, которую вы дали.

Если мы посмотрим на сигнатуру вызова метода:

update(String table, ContentValues values, String whereClause, String[] whereArgs)

так:

ContentValues cv=new ContentValues(); cv.put(colName, new Integer(1));

String[] items = new String []{String.valueOf(Z_ID)}

db.update( tableName, cv, Z_ID + "=?", items );

Ваш код выглядит примерно так?

Ваш массив items должен совпадать с предложением where. Другой пример будет выглядеть примерно так:

ContentValues cv=new ContentValues(); cv.put(salesColName, new Integer(4534));

String whereClause = "band=? and album=?"; String whereArgs = new String [] { "U2", "Joshua Tree" };

db.update( tableName, cv, whereClause , whereArgs);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...