Невозможно решить синтаксическую ошибку около ГДЕ в sqlite, Android - PullRequest
0 голосов
/ 30 июня 2019

У меня есть строка с оператором SQLite, которую я хотел бы выполнить следующим образом ..

String query = "UPDATE Inventory SET ProductName =" 
+ product.getProductName() + ", InStock =" + product.getProductInStock()
+ ", CostPrice =" + product.getProductCostPrice() + ",SellingPrice =" 
+ product.getProductSellingPrice() + ", Description =" 
+ product.getProductDescription() + " WHERE rowid =" 
+ String.valueOf(Integer.parseInt(rowId) + 1);

db.execSQL(query);

У меня есть класс POJO под названием Product. rowid это встроенная переменная, верно? Я попробовал это в верхнем регистре, и он все еще не работал.

Я получаю следующую ошибку

E/SQLiteLog: (1) near "WHERE": syntax error

1 Ответ

1 голос
/ 30 июня 2019

В вашем коде вы устанавливаете значения для text столбцов без использования одинарных кавычек.Это может быть одной из проблем кода.Рекомендуемый способ обновления - использовать ContentValues, который также sql-инъекция безопасный:

ContentValues cv = new ContentValues();
cv.put("ProductName", product.getProductName());
cv.put("InStock", product.getProductInStock());
cv.put("CostPrice", product.getProductCostPrice());
cv.put("SellingPrice", product.getProductSellingPrice());
cv.put("Description", product.getProductDescription());
int result = db.update("Inventory", cv, "rowid = ?", new String[] {String.valueOf(Integer.parseInt(rowId) + 1)});

Переменная result будет содержать числострок обновлено.Я не уверен насчет этого значения:

String.valueOf(Integer.parseInt(rowId) + 1)

, но если вы проверили его, тогда все в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...