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

相关推荐
EntyIU1 分钟前
大文件分片上传完整案例
java
雨师@4 分钟前
go语言项目--实例化(图书管理)--006
开发语言·后端·golang
kuro-shiro7 分钟前
SpringBoot 启动流程
java·spring boot·后端
承渊政道8 分钟前
【MySQL数据库学习】(MySQL访问、连接池原理与简易网站数据流动)
数据库·学习·mysql·mysql访问·连接池原理
吴声子夜歌8 分钟前
SQL进阶——EXISTS谓词
java·数据库·sql
偏爱自由 !10 分钟前
8. 泛型程序设计
java·开发语言·windows
剑挑星河月10 分钟前
35.搜索插入位置
java·数据结构·算法·leetcode
海兰11 分钟前
【SpringBoot 】AOP企业级权限控制方案(二)
android·java·spring boot
偏爱自由 !11 分钟前
2:IDEA中git的使用--基础操作
java·git·intellij-idea
ch.ju12 分钟前
Java Programming Chapter 4——Class loading
java·开发语言