Illegal operation on empty result set.
来源:互联网 发布:淘宝论坛怎么引流 编辑:程序博客网 时间:2024/06/06 01:07
Illegal operation on empty result set. 在空的结果集上进行(非法)操作
先贴错误日志,然后分析.
org.springframework.dao.TransientDataAccessResourceException: PreparedStatementCallback; SQL [select * from system_user where sys_user_email = ?]; Illegal operation on empty result set.; nested exception is java.sql.SQLException: Illegal operation on empty result set.at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:107)at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:603)at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:637)at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:666)at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:674)at com.wswhr.LoginServer.dao.impl.SystemUserDaoImpl.selectUserByEmail(SystemUserDaoImpl.java:68)at com.wswhr.LoginServer.service.impl.SystemUserServiceImpl.isExist(SystemUserServiceImpl.java:28)at com.wswhr.LoginServer.springmvc.controller.RegisterController.exist(RegisterController.java:46)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method.invoke(Unknown Source)at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)at javax.servlet.http.HttpServlet.service(HttpServlet.java:643)at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:612)at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:503)at java.lang.Thread.run(Unknown Source)Caused by: java.sql.SQLException: Illegal operation on empty result set.at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)at com.mysql.jdbc.ResultSet.checkRowPos(ResultSet.java:713)at com.mysql.jdbc.ResultSet.getStringInternal(ResultSet.java:5624)at com.mysql.jdbc.ResultSet.getString(ResultSet.java:5544)at com.mysql.jdbc.ResultSet.getString(ResultSet.java:5584)at com.alibaba.druid.filter.FilterChainImpl.resultSet_getString(FilterChainImpl.java:809)at com.alibaba.druid.filter.stat.StatFilter.resultSet_getString(StatFilter.java:930)at com.alibaba.druid.filter.FilterChainImpl.resultSet_getString(FilterChainImpl.java:807)at com.alibaba.druid.proxy.jdbc.ResultSetProxyImpl.getString(ResultSetProxyImpl.java:687)at com.alibaba.druid.pool.DruidPooledResultSet.getString(DruidPooledResultSet.java:257)at com.wswhr.LoginServer.dao.impl.SystemUserDaoImpl$1.extractData(SystemUserDaoImpl.java:81)at com.wswhr.LoginServer.dao.impl.SystemUserDaoImpl$1.extractData(SystemUserDaoImpl.java:1)at org.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:649)at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:587)... 35 more
报错的代码如下:
public SystemUser selectUserByEmail(String email) {String sql = "select * from system_user where sys_user_email = ?";Object[] args = {email};//List<SystemUser> user = getMasterTemplate().query(sql,args, ROW_MAPPER);////if(user == null||user.size() == 0){//return null;//}else{//return user.get(0);//}SystemUser user = getMasterTemplate().query(sql, args, RESULT_SET);return user;}
@Resource(name = "JDBCdataSourceTemplate") private JdbcTemplate masterTemplate; protected JdbcTemplate getMasterTemplate() { return masterTemplate; }
<!-- 登录连接数据库 --><bean id="JDBCdataSourceTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource" /></bean>
顺序有点乱. 上面三块的代码块顺序应该完全颠倒.
报错的代码是. user = getMasterTemplate().quert(sql,args,RESULT_SET);
RESULE_SET的代码如下:
private final ResultSetExtractor<SystemUser> RESULT_SET = new ResultSetExtractor<SystemUser>() {@Overridepublic SystemUser extractData(ResultSet rs) throws SQLException,DataAccessException {String id = rs.getString("sys_user_id");String name = rs.getString("sys_user_name");String password = rs.getString("sys_user_password");String email = rs.getString("sys_user_email");String status = rs.getString("sys_user_status");String type = rs.getString("sys_user_type");Date createDate = rs.getDate("sys_user_createdate");return new SystemUser( id, name, password, email,status,type,createDate);}};
import org.springframework.dao.DataAccessException;import org.springframework.jdbc.core.ResultSetExtractor;import org.springframework.jdbc.core.RowMapper;import org.springframework.stereotype.Repository;
报错的原因是,查询的结果集 ResultSet 是空的,所以,不能用 rs.getString("");。
判断查询结果集是否为空:
参考文章:http://blog.csdn.net/friendan/article/details/7039164
就是 rs.next() ,如果 返回true ,就不为空,如果是false,就是空结果集。
一下代码加 非空验证判断,就可以了。
private final ResultSetExtractor<SystemUser> RESULT_SET = new ResultSetExtractor<SystemUser>() {@Overridepublic SystemUser extractData(ResultSet rs) throws SQLException,DataAccessException {if(<span style="font-family: Arial, Helvetica, sans-serif;">rs.next()</span><span style="font-family: Arial, Helvetica, sans-serif;">){//rs.next()</span>String id = rs.getString("sys_user_id");String name = rs.getString("sys_user_name");String password = rs.getString("sys_user_password");String email = rs.getString("sys_user_email");String status = rs.getString("sys_user_status");String type = rs.getString("sys_user_type");Date createDate = rs.getDate("sys_user_createdate");return new SystemUser( id, name, password, email,status,type,createDate);}else{return null;}}};
0 0
- Illegal operation on empty result set
- Illegal operation on empty result set.
- SQLException:Illegal operation on empty result set.
- java.sql.SQLException: Illegal operation on empty result set
- Illegal operation on empty result set.错误的改正方法
- error C2276: '&' : illegal operation on bound member function expression
- error C2276: '&' : illegal operation on bound member function expression
- Solution: Linked Parameter causes "Operation illegal on linked parameter"
- informix集群-140ISAM error: operation illegal on a DR secondary.
- 个人总结:informix集群出现:140: ISAM error: operation illegal on a DR Secondary
- AE加载地图时报错:The operation was attempted on an empty geometry.
- empty or undefined result location
- com.ibm.db2.jcc.b.SqlException: [ibm][db2][jcc][10120][10898] Invalid operation: result set is close
- Illegal mix of collations for operation 'like'
- rsync: failed to set times on "/." (in ftp): Operation not permitted (1)
- PKU 2454 Set Operation
- Set Property CIM Operation
- POJ 2443 Set Operation
- 时间工具类
- 文字移动
- jvisualvm 远程监控Linux下的tomcat(后附resin的配置)
- Libevent源码分析-----TAILQ_QUEUE队列
- code vs 1218 疫情控制 (二分+贪心+倍增)
- Illegal operation on empty result set.
- 数据库的读取
- R-CNN+SPP-NET+Fast-R-CNN+Faster-R-CNN+YOLO+SSD阅读笔记
- CSS Transform / Transition / Animation 属性的区别
- Java使用JDBC连接mySQL数据库小例子
- Ubuntu下超级终端minicom的安装和配置
- (2)RIL简析(高通)——消息处理
- golang--json使用笔记
- Libevent源码分析-----event_io_map哈希表