我有一个带有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);


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

我收到以下错误

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

最佳答案

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

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)


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

09-10 03:41
查看更多