今天,我换了台新电脑进行开发! 一切的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在某种情况下,仍然不能使用!