java - 消除mysql n java中准备好的语句中的引号

标签 java mysql

我有这样一个准备好的语句

stmt = select * from table_name where id IN (?);

一旦我传递了参数,stmt 看起来就是这样

stmt = select * from table_name where id IN ('1,2,3');

执行查询时没有错误。然而,resultset 仅为 id=1 返回。有什么方法可以消除所有这些 ID 的引号/获取 resultset

stmt = select * from table_name where id IN (?);

select GROUP_CONCAT(id) id from table ;

if(rs.next()){

    stmt.setString(1,rs.getString("id"));

    stmt.executeQuery();
}

提前致谢。

最佳答案

不清楚 ID 类型是什么,但我相信您实际上应该准备一个语句,将每个可能的值作为单独的参数:

select * from table_name where id IN (?, ?, ?)

然后将三个参数的三个值相加。这是参数化 SQL 的一个常见问题 - 当您希望能够指定可变数量的值时,您需要改变 SQL。 可能有一种特定于 MySQL 的方式来处理这个问题(比如 table-valued parameters in SQL Server 2008 ),但我不相信有一种通用的 JDBC 方式可以做到这一点。

关于java - 消除mysql n java中准备好的语句中的引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9498356/

相关文章:

php - 每次刷新mysql时显示来自不同表的数据

java - 如果我将变量复制到另一个变量并尝试更改它,是否会使变量 volatile 起作用?

java - 如何在特定时间间隔调用作为 Web 应用程序部署到 Apache Tomcat 服务器的 Java 方法?

mysql - 比较日期或日期与时间,具体取决于时间是否设置

php - json 到 mysql 只插入最后一条记录

php - 从 php 运行 python 脚本并在 mysql 数据库中写入数据值

php - 具有连接和聚合值的 MYSQL Group By

java - 文档过滤器与 KeyListener 与 MaskFormatter

java - 如何在 Java 中计算瓷砖地板需要多少 block 瓷砖

java - 保存到 "ExternalStorage"- 处理库