我有一个带有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
答案 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)
但是如果您已经测试过,那就可以了。