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

Java 无法解决sqlite、android中WHERE附近的语法错误,java,android,sqlite,Java,Android,Sqlite,我有一个带SQLite语句的字符串,我想这样执行 String query = "UPDATE Inventory SET ProductName =" + product.getProductName() + ", InStock =" + product.getProductInStock() + ", CostPrice =" + product.getProductCostPrice() + ",SellingPrice =" + product.getProductSellingP

我有一个带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
列,而不使用单引号。
这可能是代码的问题之一。
执行更新的推荐方法是使用同样安全的:

变量
result
将包含更新的行数。
我不确定这个值:

String.valueOf(Integer.parseInt(rowId) + 1)

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

什么是
String.valueOf(Integer.parseInt(rowId)+1)
?或者你希望它做什么?@tomerpacific,结尾部分是一个字符串,不需要它。@forpas rowId是一个字符串,但它包含一个数字,我将它转换为数字,然后添加1,后来我将其转换回字符串,因为它是字符串变量的一部分。1)如果打印出
query
的值,则更容易发现问题。把它加到问题上。2) 您应该使用
PreparedStatement
而不是使用“字符串抨击”来构造查询。(我打赌产品描述是一个字符串,这很混乱,因为您在SQL字符串抨击中没有在其周围加引号。)非常感谢!我实际上并没有发现错误是什么,但内容值方法运行良好。当我从数据库中检索产品时,我使用了相同的
String.valueOf(Integer.parseInt(rowId)+1)
,它工作正常,所以我认为这不是问题所在。如果它工作正常,就可以了。使用ContentValues,而不是连接sql部分。这既简单又安全。
String.valueOf(Integer.parseInt(rowId) + 1)