我有一個帶有 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
提交
取消