为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕雪6442864 2023-02-23 18:18:38
我有一个带有 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)

但如果你已经测试过了,那很好。


查看完整回答
反对 回复 2023-02-23
  • 1 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号