ActiveJDBC 更新子句不起作用



我想使用 activejdbc 更新多个记录

Person.update("name = ?, last_name = ?", "name in ?", "Steve", "Johnson", "jagadeesh,varma,jampana,vikash");
没有

错误,但数据库中没有更新任何内容

问题与in子句有关。您传递的是 "jagadeesh,varma,jampana,vikash",而不是"('jagadeesh'、'varma'、'jampana'、'vikash'(",如 in 条款所要求的那样

此解决方案应该可以解决您的问题:

Person.update("name = ?, last_name = ?", "name in ('jagadeesh','varma','jampana','vikash')", "Steve", "Johnson");

更多详情

这不是 ActiveJDBC 框架的问题,而是 JDBC 标准不支持的问题。请参阅此页面以获取更多信息:http://javalite.io/in_clause

您需要连接字符串:

List names = Util.list("jagadeesh","varma","jampana","vikash");
List<Person> people = Person.update(name = ?, last_name = ?", "name IN ('" + Util.join(names, "', '") + "')", "John", "Doe");

不幸的是,如果您正在构建Web应用程序,这可能会为SQL注入攻击提供可能性 - 因此请小心。

最新更新