无法在sqlite,android中的WHERE附近解决语法错误

时间:2019-06-30 11:57:52

标签: java android sqlite

我有一个带有SQLite语句的String,我想这样执行。

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);

我有一个称为Product的POJO类。 rowid是内置变量吗?我尝试使用大写字母,但仍然无法正常工作。

我遇到以下错误

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

1 个答案:

答案 0 :(得分:1)

在您的代码中,您将值设置为text列,而不使用单引号。
这可能是代码的问题之一。
推荐的更新方法是使用ContentValues也是安全的sql-injection

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)

但是如果您已经测试过,那就可以了。