2015-08-06 2 views
0

Я новичок в Android, и я пытаюсь использовать этот код для обновления значения индекса элемента: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()) код работает без сбоев, но каждый раз, когда я его запускаю, новое значение заменяет старое, а не складывается вместе. Может ли кто-нибудь сказать мне, почему и как его решить? Большое спасибо!!

ответ

2

Ваша проблема в форматировании. Команда 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() }); 
Смежные вопросы