SQLite Android - 使用新的

时间:2015-08-06 01:33:21

标签: android database sqlite

我是android的新手,我正在尝试使用这些代码来更新条目的值:

"Update " + TableIncomeCategory + " Set " + Income_Cat_currentAmount + " = " + "'" + Income_Cat_currentAmount + "'"
                        + "+" + "'"+tran.getAmount()+"'" + " where " + Income_category_name + " LIKE " + "'" + tran.getCategory() + "'");

我正在尝试将当前数量(Income_Cat_currentAmount)与代码运行的新值(tran.getAmount())相加而不会崩溃,但每次运行时,新值都会替换旧值而不是加在一起。谁能告诉我为什么以及如何解决它?非常感谢!!

1 个答案:

答案 0 :(得分:3)

您的问题是格式化。 SQL命令最终如下:

Update IncomeCategoryTab
Set currentAmount = 'currentAmount'+'123'
where category_name LIKE 'some category'

这是错误的,因为您要将一个字符串附加到另一个字符串。

您不能引用列名,也不应引用非字符串的值:

Update IncomeCategoryTab
Set currentAmount = currentAmount + 123
where category_name LIKE 'some category';

在Java中,您应该使用字符串值的参数(如类别名称)以避免必须正确引用它们(如果它们可以包含引号则会变得更复杂):

db.execSQL("Update "+TableIncomeCategory+
           " Set "+Income_Cat_currentAmount+" = "+Income_Cat_currentAmount+" + "+tran.getAmount()+
           " where "+Income_category_name+" LIKE ?;",
           new Object[]{ tran.getCategory() });