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

相关推荐
猫猫能有什么坏心眼几秒前
ElasticSearch入门手册
后端
魂梦翩跹如雨几秒前
Java BigDecimal与RoundingMode的用法总结
java·算法
猫猫能有什么坏心眼1 分钟前
HashMap解析
后端
猫猫能有什么坏心眼2 分钟前
Kafka安装教程
后端
一入程序无退路3 分钟前
若依框架导出显示中文,而不是数字
java·服务器·前端
Hello.Reader3 分钟前
Flink SQL 中的 SELECT DISTINCT批流一体下的去重与状态管理
数据库·sql·flink
tealcwu4 分钟前
【Unity基础】实现Scroll View跟随动态内容滚动
java·unity·游戏引擎
_dindong4 分钟前
Linux网络编程:I/O多路转接之epoll
linux·服务器·网络·sql·mysql
m0_626535205 分钟前
代码分析 关于看图像是否包括损坏
java·前端·javascript