使用 JdbcTemplate 查询数据时报错:列名无效(已解决)
又犯了一个错误。
争取没有下次了。
就算再犯,也要知道去哪找答案。
所以,记录一下,以示警戒。
报错
使用 JdbcTemplate 查询数据时,出现异常:
PreparedStatementCallback; bad SQL grammar [--sql--]; nested exception is java.sql.SQLException: 列名无效
代码大致如下:
List<SomeObj> list = getJdbcTemplate().query(sql,
new RowMapper() {
public Object mapRow(ResultSet arg0, int arg1)
throws SQLException {
SomeObj row = new SomeObj(); row.setId(arg0.getString("ID")); return row;
}
});
找错
既然是 列名无效,肯定是SQL的问题了。
于是,把SQL贴到PL/SQL 中执行,奇怪,没有报错。
反复试了几次,都是程序报错,但直接执行SQL没问题。
想起之前由于参数个数的问题,遇到过这样的异常:java.sql.SQLException: 无效的列索引。
于是又检查了一遍参数,没有问题。
只能上网找找答案了。
搜了几篇文章,没找到和这个类似的问题。
看着看着,忽然想到,SQL中查询的列,和Java代码中要获取的列一致么?
原来是这样
出现异常的原因找到了:在Java代码中用到的列,SQL中没有查询。
即,Java中用到了类似这样的代码: row.setId(arg0.getString("COL_A")) ,而SQL中的 SELECT 语句中没有 COL_A 这一列。
后记:这是调整之前已有的代码,去掉了一些不必要的列,所以才导致SQL和后面需要取值的列不一致。
新开发的话,应该不会出现这个问题。
因为,这类应用,一般都是确定了需要哪些列,然后再去组装SQL。
使用 JdbcTemplate 查询数据时报错:列名无效(已解决)的更多相关文章
- 【iBatis】使用resultMap配置返回结果时报错“列名无效”
使用iBatis联查DEPT.EMP两张表时 采用如下结构 <resultMap id="find_departmentMap" class="com.dto.De ...
- vue项目引入第三方js插件,单个js文件引入成功,使用该插件方法时报错(问题已解决)
1.引入第三方js文件,npm安装不了 2.控制台显示引入成功 3.在methods下使用 图片看不清请看下面代码 updateTime() { setInterval(()=>{ var cd ...
- SQL查询数据时报错
在开发过程中如果查询报如下的错误: org.springframework.jdbc.UncategorizedSQLException: Error attempting to get column ...
- c#保存datagridview中的数据时报错 “动态SQL生成失败。找不到关键信息”
ilovejinglei 原文 C#中保存datagridview中的数据时报错"动态SQL生成失败.找不到关键信息" 问题描述 相关代码 using System; us ...
- MySQL 导入外部数据时报错:1153: Got a packet bigger than 'max_allowed_packet' 解决方案
MySQL 导入外部数据时报错:1153: Got a packet bigger than 'max_allowed_packet' 解决方案 zoerywzhou@163.com http://w ...
- layui表格数据渲染SpringBoot+Thymeleaf返回的数据时报错(Caused by: org.attoparser.ParseException: Could not parse as expression: ")
layui table渲染数据时报错(Caused by: org.attoparser.ParseException: Could not parse as expression: ") ...
- JdbcTemplate查询数据 三种callback之间的区别
JdbcTemplate针对数据查询提供了多个重载的模板方法,你可以根据需要选用不同的模板方法. 如果你的查询很简单,仅仅是传入相应SQL或者相关参数,然后取得一个单一的结果,那么你可以选择如下一组便 ...
- python+selenium 批量执行时出现随机报错问题【已解决】
出现场景:用discover方法批量执行py文件,出现随机性的报错(有时a.py报错,有时b.py报错...),共同特点:均是打开新窗口后,切换最新窗口,但定位不到新窗口的元素,超时报错.由于个人项目 ...
- Oracle 参数化更新数据时报错:Oracle ORA-01722: 无效数字
报错:Oracle ORA-01722: 无效数字 看了一篇博客,据说是参数与列名不能一致,改过之后还是报一样的错误:Oracle ORA-01722: 无效数字 ,后来试了一下,不是参数名必须不一样 ...
随机推荐
- What’s Brewing for .NET Developers
Microsoft hosted its premier fall developer event – Connect(); // 2016 in New York on November 16-17 ...
- boost.property_tree解析xml的帮助类以及中文解析问题的解决(转)
boost.property_tree可以用来解析xml和json文件,我主要用它来解析xml文件,它内部封装了号称最快的xml解析器rapid_xml,其解析效率还是很好的.但是在使用过程中却发现各 ...
- centos7下安装gcc7
之前写过在linux下升级gcc 4.8至gcc 4.9的过程,现在gcc最新的版本是8,有些软件必须是gcc 7或者以上的版本才可以编译,比如clickhouse,gcc 7的安装过程和之前基本上一 ...
- CSS全局居中
可见区域 垂直居中 top:$(document).scrollTop() + ($(document).height() - $(document).scrollTop())/2,
- MDX Cookbook 07 - 在不同层次结构的成员中实现 逻辑 OR 的效果
第一个示例:查看所有包括黑色产品的子目录产品中的 Reseller Order Quantity 和 Reseller Order Count. 第二个示例:和第一个示例查询结构一样,只是筛选的是大小 ...
- Nginx的安装和设置
Nginx是一个高性能的HTTP服务器和反向代理服务器.当一个服务器访问量太大时(比如C10k问题,Concurrent 10,000 Connection),就可以安装设置一个Nginx服务器,将客 ...
- 【Matplotlib】数据可视化实例分析
数据可视化实例分析 作者:白宁超 2017年7月19日09:09:07 摘要:数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息.但是,这并不就意味着数据可视化就一定因为要实现其功能用途而令 ...
- Java 迭代器综述
一.摘要 迭代器模式是与集合共生共死的.一般来说.我们仅仅要实现一个容器,就须要同一时候提供这个容器的迭代器.使用迭代器的优点是:封装容器的内部实现细节,对于不同的集合,能够提供统一的遍历方式,简化c ...
- spring-boot 1.X集成swagger
1.引入POM依赖 <properties> <swagger-annotations.version>1.5.13</swagger-annotations.versi ...
- Nginx 指令目录(中文版)
指令大全 accept_mutex accept_mutex_delay access_log add_after_body add_before_body add_header addition_t ...