在 Java 或 Groovy 中使用“IN”的 SQL 查询 [重复]
Posted
技术标签:
【中文标题】在 Java 或 Groovy 中使用“IN”的 SQL 查询 [重复]【英文标题】:SQL queries with 'IN' in Java or Groovy [duplicate] 【发布时间】:2022-01-22 22:11:06 【问题描述】:我写了一个 SQL 查询:
select sum(amount) as totalAmount
from employee_account
where id = 29967
and repayment_status in ("MARKEDPAID", "PAID", "PENDING", "OVERDUE");
此查询在 mysql 控制台中运行良好。我必须使用 Java 执行此查询
String query = ""
int id = 123
Connection connection = // connection code
Statement statement = connection.createStatement()
ResultSet resultSet = statement.executeQuery(query)
我写的
query = "select sum(amount) as totalAmount from employee_account where id = $id and repayment_status in ()"
如何在上面的字符串查询中传递"MARKEDPAID", "PAID", "PENDING", "OVERDUE"
?
【问题讨论】:
单引号? in ('MARKEDPAID', 'PAID', 'PENDING', 'OVERDUE') 这是正确的吗? @AnkitSharma 是的 MySQL 可以使用单引号或双引号,只要您保持一致即可 不工作我必须通过java代码执行 ***.com/questions/1327074/… 【参考方案1】:String status = "\'OVERDUE\',\'PAID\',\'PENDING\',\'MARKEDPAID\'"
String query = "select sum(amount) as totalAmount from employee_account where id = $id and repayment_status in ($status)"
【讨论】:
您的代码易受 SQL 注入攻击。不要使用字符串插值将值添加到查询字符串中,使用 JDBC 参数(在 这种 情况下使用$status
是安全的,但 $id
不是!)。以上是关于在 Java 或 Groovy 中使用“IN”的 SQL 查询 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
错误记录Groovy 运行报错 ( Exception in thread “main“ groovy.lang.MissingMethodException: No signature of )
使用 Groovy 或 Java 将日志发送到 Syslog 服务器