SqlResultSet的错误信息解决(与Oracle连接的注意事项)

今天,我换了台新电脑进行开发! 一切的Java环境,要重新去配置!

我的一个业务方法用到SqlResultSet对象:

SqlRowSet rs=(SqlRowSet)jdbc.queryForRowSet(sql.toString());
			while(rs!=null&&rs.next())
			{
				java.sql.Clob clob=(java.sql.Clob)rs.getObject(1);
				Reader is=clob.getCharacterStream();
				BufferedReader br = new BufferedReader(is);
				String s=br.readLine();
				while(s!=null)
				{
					strs.append(s);
					s=br.readLine();
				}
			}

 

sql语句能够打印出来,但是不能去执行!  如果换为List list = jdbc.queryForList(sql.toString()); 则能够顺利执行! 所以我认为是SqlResultSet出现的错误!

Caused by: java.sql.SQLException: Invalid precision value. Cannot be less than zero
	at javax.sql.rowset.RowSetMetaDataImpl.setPrecision(Unknown Source)
	at com.sun.rowset.CachedRowSetImpl.initMetaData(Unknown Source)
	at com.sun.rowset.CachedRowSetImpl.populate(Unknown Source)
	at org.springframework.jdbc.core.SqlRowSetResultSetExtractor.createSqlRowSet(SqlRowSetResultSetExtractor.java:66)
	at org.springframework.jdbc.core.SqlRowSetResultSetExtractor.extractData(SqlRowSetResultSetExtractor.java:49)
	at org.springframework.jdbc.core.JdbcTemplate$1QueryStatementCallback.doInStatement(JdbcTemplate.java:394)
	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:342)
	at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:404)
	at org.springframework.jdbc.core.JdbcTemplate.queryForRowSet(JdbcTemplate.java:447)
	at com.hdsm.zctj.zctj.ZctjMain.getTable(ZctjMain.java:605)
	at com.hdsm.zctj.zctj.ZctjAcion.execute(ZctjAcion.java:57)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at com.hdsm.SessionFilter.doFilter(SessionFilter.java:51)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
	at java.lang.Thread.run(Unknown Source)

 

通过排错! 我知道了,默认使用的tomcate5.5使用的是MyEclipse自带的jdk! 所以出现了问题!

如果使用MyEclipse自带的服务器,也会出现问题! 所以我判断是MyEclipse自带的服务器和jdk,不支持SqlREsultSEt,不仅如此,可能还不支持开发中的其他对象呀! 当我把jdk和服务器都换了之后,问题解决!

 

=------》 在开发中,不要使用MyEclipse自带的服务器和jdk ,切记!

 

 

==》》》》 在开发中,如果我们连接的数据库是Oracle,而且使用的是连接池! 则要注意了:

项目中的classes12.jar 用于项目的编译! tomcate 服务器中的classes12.jar 用于项目的执行!  所以要保证服务器中的oracle的classes12.jar与项目中classses12.jar与Tomcate服务器中的classes12。jar必须保证一致: 大小、版本!必须一致! 负责jdbc在某种情况下,仍然不能使用!

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值