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