Java 无法解决sqlite、android中WHERE附近的语法错误
我有一个带SQLite语句的字符串,我想这样执行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
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)