Необходимо обновить значение столбца в SQLite - PullRequest
3 голосов
/ 24 марта 2011

Мне нужно отменить значение столбца для всех строк в столбце.Я пытаюсь сделать это, используя следующий запрос, но он не обновляет ни одной строки:

sqliteDatabase.rawQuery("UPDATE "+ SQL_TABLE_NAME + " SET "+ COL_1 +" = " + "-"+COL_1  , null);

Где COL-1 = col_1, который имеет тип integer в таблице.--Twinks

Ответы [ 2 ]

4 голосов
/ 24 марта 2011

Вы можете умножить столбец на -1

 Update SQL_TABLE_NAME Set COL_1 = COL_1 * -1

Имейте в виду, что ваш формат запроса работает для меня;

 Update tPerson Set Age = -Age

На вашем месте я бы создал строку и установил в ней свой запрос, чтобы вы могли проверить, установлен ли он так, как вы ожидаете:

 String sql = "UPDATE "+ SQL_TABLE_NAME + " SET "+ COL_1 +" = " + "-" + COL_1;
 sqliteDatabase.rawQuery(sql, null); //breakpoint here, and check sql var

Есть ли в вашем SQL_TABLE_NAME пробел? Попробуйте заключить его в квадратные скобки, и, возможно, то же самое с именем столбца.

Edit:

Я бы рекомендовал обновить первичные ключи, чтобы они были отрицательными, но для этого вы можете сделать что-то вроде этого:

 SET IDENTITY_INSERT Person ON

 Insert Into Person ([Id], [Name], [Age])
 Select -[Id], [Name], [Age] From Person

 SET IDENTITY_INSERT Person OFF

(но это дублирует вашу таблицу, возможно, вы захотите поместить данные во временную таблицу) - однако я думаю, что это ужасное решение. Я бы попробовал найти способ реструктурировать схему таблицы, чтобы она не была первичным ключом.

2 голосов
/ 24 марта 2011
sqliteDatabase.rawQuery("UPDATE "+ SQL_TABLE_NAME + " SET "+ COL_1 +" = " + "-1*"+COL_1 , null);

ИЛИ

sqliteDatabase.rawQuery("UPDATE "+ SQL_TABLE_NAME + " SET "+ COL_1 +" = " + "0-"+COL_1 , null);

---- РЕДАКТИРОВАТЬ1 -----

sqliteDatabase.rawQuery("UPDATE "+ SQL_TABLE_NAME + " SET `"+ COL_1 +"` = " + "(`"+COL_1 +"` * -1)", null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...