需要在SQLite中更新列的值

时间:2011-03-24 09:02:36

标签: android sqlite

我需要为列中的所有行否定列的值。我试图使用以下查询,但它没有更新任何行:

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

其中COL-1 = col_1,表格中为整数类型。

- 猎者

2 个答案:

答案 0 :(得分:4)

您可以将列乘以-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

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

答案 1 :(得分: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);