细节决定成败!jdbc的List<?> qryList4Sql(String sql)报错-标志符过长

问题产生背景:

在写sql时,想着简单直接就偷懒了,没有看清细节

操作步骤跟发现问题:
  1. sql语句的执行选用的是jdbc提供的List<?> qryList4Sql(String sql) 方法

2,这是我的sql语句(简化处理)

复制代码
 String sql ="select  a,b,c from ABC WHERE ID  = " + paramForm.getSubId();
  1. 执行的时候报错

org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad SQL grammar select a,b,c from ABC WHERE ID= XXXXXXXXXXX; nested exception is java.sql.SQLSyntaxErrorException: ORA-00972: 标识符过长

很奇怪我就把这条sql,拿出来放在了数据库去直接执行,发现没有问题

  1. 一开始的时候以为是查询的字段过多过长了,采用了别名的方式,但是还是报错了。

  2. 但是之前用过这个查询方法并没有报错,于是我对比检查了下,因为俩次sql的写法不一样,没问题的写法是这样的

    String sql ="select a,b,c from ABC WHERE 1 = 1 "

    if (ID != null && !ID.isEmpty()) {
    sql += " AND ID= '" + ID+ "'";
    }

就看到了原因,原来是最开始的写法,ID的具体数据没有加''引号,执行的时候就识别不出来,当成了一个整体去执行,所以就报错了。

相关推荐
dunky1 分钟前
Spring 的三级缓存与循环依赖
后端·spring
子兮曰3 分钟前
AI Coding Method Map:一张图看懂 AI 编程的完整链路
前端·人工智能·后端
Chenyiax19 分钟前
从 PyTorch Attention 源码理解 KV Cache、缓存命中与 Prefix Cache
后端
IT_陈寒41 分钟前
React状态更新总是不及时?你可能漏了这步批处理机制
前端·人工智能·后端
倔强的石头_1 小时前
KingbaseES 新版MySQL 兼容版体验:旧版迁移 + 功能实测
数据库
Jinkey2 小时前
要用户手机号真的是为了打骚扰电话吗?浅谈微信生态会员账号体系与资产合并
后端·微信·微信小程序
葫芦和十三2 小时前
图解 MongoDB 06|模式演进:无 schema 是优势还是债
后端·mongodb·agent
葫芦和十三9 小时前
图解 MongoDB 05|文档模型设计:内嵌 vs 引用,反范式不是免费午餐
后端·mongodb·agent
不能放弃治疗13 小时前
单 Agent 实现模式
后端
IT_陈寒15 小时前
Redis内存爆了,原来我漏掉了这个致命配置
前端·人工智能·后端