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

相关推荐
凤山老林14 小时前
轻量级规则引擎落地:Spring Boot 集成 LiteFlow 实现动态业务编排与热更新
java·spring boot·后端·规则引擎·liteflow
IT_陈寒14 小时前
Python装饰器把我坑惨了,原来这样用才不掉链子
前端·人工智能·后端
夏贰四14 小时前
管控数据加载调度如何规避任务冲突?数据加载运维监控体系该如何搭建?
java·大数据·运维
山甫aa14 小时前
JavaWeb后端开发学习手册
java·开发语言·数据库·学习·mysql·springboot·web
程序员爱钓鱼14 小时前
Rust Associated Type关联类型详解:为Trait定义内部类型
前端·后端·rust
程序员爱钓鱼14 小时前
Go 编程实战:匿名函数 Anonymous Function——没有名字的函数与灵活回调
后端·面试·go
鱼鳞_15 小时前
热门八股-JVM
java·jvm
JavaPub-rodert15 小时前
MongoDB 常用命令和常见问题大全
数据库·mongodb
ly768915 小时前
XML 从入门到实践:语法、命名空间、XPath、XSD 与 Java 安全解析
xml·java·python
长谷深风11115 小时前
好的 Tool Schema,不是字段越全越好
java·大数据·人工智能·ai agent·agent工作流·智能体设计·ai产品设计