2011-03-24 33 views
3

我需要否定列中所有行的列值。我想这样做,使用下面的查询,但没有更新任何行:需要更新SQLite中列的值

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

凡COL-1 = COL_1,这是在表整数类型。

--Twinks

回答

3

您可以通过-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有它的空间?尝试将其包装在方括号中,也许与列名称相同。

编辑:

我会建议更新主键是负面的,但要做到这一点,你可以做这样的事情:

SET IDENTITY_INSERT Person ON 

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

SET IDENTITY_INSERT Person OFF 

(但是这会复制你的表,你可能想将数据推入临时表) - 但我认为这是一个可怕的解决方案。我试着找到一种方法来重构你的表模式,所以它不是主键。

+0

mCount在我执行查询后出来-1,表和列名没有空格,他们有_使其有意义 – help 2011-03-24 09:31:07

+0

有一件事我忘了提及的是,COL_1是一个主键..如果影响 – help 2011-03-24 09:39:10

+0

@help我会看看这个:[link](http://stackoverflow.com/questions/2473215/negative-primary-keys) – firefox1986 2011-03-24 09:42:51

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

OR

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

---- ----- EDIT1

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

嗨Sarwar,它不工作 – help 2011-03-24 09:20:16

+0

我不知道我使用的语法。但是,我认为你知道这个语法,并且有了这个想法。出于好奇, – 2011-03-24 09:23:14

+0

什么是你的表名和特定的列名? – 2011-03-24 09:24:17