猿问

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

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


慕雪6442864
浏览 113回答 1
1回答

白猪掌柜的

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)但如果你已经测试过了,那很好。
随时随地看视频慕课网APP

相关分类

Java
我要回答