You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JdbcTemplate参数数组方式查询失效,原因何在?

问题原因排查与解决

嘿,我一眼就发现了最直接的问题:你两段代码里的数据库表名不一致!

  • 能正常运行的第一段SQL,查询的是 PACKAGE_DETAILS 表
  • 用占位符的第二段SQL,查的却是 MOBIS_PACKAGE_DETAILS 表

如果 MOBIS_PACKAGE_DETAILS 这个表根本不存在,或者你的JDBC账号没有访问它的权限,那这段代码肯定跑不起来。

当然,除了表名的问题,也可以再排查这几个小细节:

  • 检查字段类型匹配:虽然你传的是字符串,但如果pack_code字段的字符集和你传入的字符串不兼容,也可能出问题(不过这个概率比较低)
  • 确认jdbcTemplate实例:两段代码用的是不是同一个jdbcTemplate?如果是不同的数据源配置,说不定连的是不同的数据库/schema
  • 看具体错误日志:比如有没有抛出EmptyResultDataAccessException(没查到数据)或者SQLException(表不存在/权限不足),日志里的错误信息才是定位问题的关键

把表名改成和第一段一致后,参数化SQL应该就能正常返回结果了,修正后的代码如下:

String sql_query_main_product = "SELECT pack_code FROM PACKAGE_DETAILS WHERE pack_code = ? "; 
Object[] objects = new Object[]{"ABC"}; 
String output = jdbcTemplate.queryForObject(sql_query_main_product, objects, String.class);
log.info(output);

内容的提问来源于stack exchange,提问作者Manjula Sampath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:23:24