我有一个带有 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
1 回答

白猪掌柜的
TA贡献1893条经验 获得超10个赞
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)
但如果你已经测试过了,那很好。
添加回答
举报
0/150
提交
取消