细节决定成败!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的具体数据没有加''引号,执行的时候就识别不出来,当成了一个整体去执行,所以就报错了。

相关推荐
九皇叔叔9 分钟前
【09】SpringBoot4 MyBatisPlus 增删改查(CRUD)
java·mybatis·mybatisplus
白杨尚青39 分钟前
C++入门篇(十):string(上)——认识string:构造与三大遍历(一条龙讲透operator[]、迭代器、auto、范围for)
java·开发语言·c++·笔记·stl
2601_9521963640 分钟前
计算机科学与技术专业应届生投商业分析岗,需要哪些额外能力?
数据库·oracle
IT_陈寒43 分钟前
JavaScript闭包的这个坑,我居然今天才爬出来
前端·人工智能·后端
皮皮学姐分享-ppx44 分钟前
地级市、省级人才政策强度测算(2000-2025)
大数据·数据库·人工智能·百度·高考
Thneonl1 小时前
消息队列选型决策树:RabbitMQ vs Kafka vs Redis Streams
后端·架构
晚安日记wanna1 小时前
大厂禁 JOIN 的真正原因,拆到第四层才清楚
数据库·后端·面试
anew___1 小时前
《从零手写操作系统 (11):文件系统初探——initrd与VFS抽象层》
java·javascript·算法
天天向上2911 小时前
Spring AI 实战:14 个踩坑记录,其中一个让我的测试全绿但产品是坏的
java·开源
dd聊技术1 小时前
LLM 说"你这篇和已有文章 92% 相似",我去查了——它编的
后端