当前位置: 技术问答>java相关
JSP中很奇怪的一个查库错误,请帮忙!(非常之急)
来源: 互联网 发布时间:2017-04-23
本文导语: 我在JSP中有一段: 页面报错: java.lang.NullPointerException at com.microsoft.jdbc.base.BaseImplStaticCursorResultSet.setupTempFiles(Unknown Source) at com.microsoft.jdbc.base.BaseImplStaticCursorResultSet.(Unknown Source) at com.microsoft.jdbc.base.BaseStatement.chai...
我在JSP中有一段:
页面报错:
java.lang.NullPointerException
at com.microsoft.jdbc.base.BaseImplStaticCursorResultSet.setupTempFiles(Unknown Source)
at com.microsoft.jdbc.base.BaseImplStaticCursorResultSet.(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.chainInServiceImplResultSets(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.getNextResultSet(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonGetNextResultSet(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeQuery(Unknown Source)
at gatcherdata.DatabaseBean.executeQuery(DatabaseBean.java:66)
at gatcherdata.DatabaseBean.getResultSet(DatabaseBean.java:141)
根据我的一路追踪,最后发现问题在这:
try
{
System.out.println("ccccccccccccccccc");
stmt = con.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,
java.sql.ResultSet.CONCUR_READ_ONLY);
System.out.println("ddddddddddddddddd");
System.out.println("sql: " + sql); //这以上都正常输出,下面那句就不
//输出,但不抛异常.最奇怪的是,我
//利用这个输出的sql在JB中测试,在
//SQL Server 2000中测试,都能正确
//数据结果,就JSP中不行
rs = stmt.executeQuery(sql); //到此执行停止,但不抛异常
System.out.println("rs: " + rs);
}
catch (SQLException e)
{
System.out.println("Error in DatabaeBean.execuQuery(): 查询数据发生错误: " + e.getMessage());
throw new SQLException();
}
另:我在JSP内用try输出e.getMessage(),它输出的是"null",各位,这错怎么出现的?
页面报错:
java.lang.NullPointerException
at com.microsoft.jdbc.base.BaseImplStaticCursorResultSet.setupTempFiles(Unknown Source)
at com.microsoft.jdbc.base.BaseImplStaticCursorResultSet.(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.chainInServiceImplResultSets(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.getNextResultSet(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonGetNextResultSet(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeQuery(Unknown Source)
at gatcherdata.DatabaseBean.executeQuery(DatabaseBean.java:66)
at gatcherdata.DatabaseBean.getResultSet(DatabaseBean.java:141)
根据我的一路追踪,最后发现问题在这:
try
{
System.out.println("ccccccccccccccccc");
stmt = con.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,
java.sql.ResultSet.CONCUR_READ_ONLY);
System.out.println("ddddddddddddddddd");
System.out.println("sql: " + sql); //这以上都正常输出,下面那句就不
//输出,但不抛异常.最奇怪的是,我
//利用这个输出的sql在JB中测试,在
//SQL Server 2000中测试,都能正确
//数据结果,就JSP中不行
rs = stmt.executeQuery(sql); //到此执行停止,但不抛异常
System.out.println("rs: " + rs);
}
catch (SQLException e)
{
System.out.println("Error in DatabaeBean.execuQuery(): 查询数据发生错误: " + e.getMessage());
throw new SQLException();
}
另:我在JSP内用try输出e.getMessage(),它输出的是"null",各位,这错怎么出现的?
|
是不是stmt==null?我觉得不是没有抛出异常,因为你只捕捉了SQLException
|
还有可能是数据库不支持stmt = con.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE, java.sql.ResultSet.CONCUR_READ_ONLY);这个
|
sql是不是null?
stmt是不是null?
rs是不是null?
一步一步查吧.
stmt是不是null?
rs是不是null?
一步一步查吧.
|
rs.next();
|
这个我不大清楚,只是提示你一下.看到里面有个下面的出错提示.
Unknown Source
我没遇到这种情况,我一般直接用stmt = con.createStatement();
Unknown Source
我没遇到这种情况,我一般直接用stmt = con.createStatement();
|
或许是JDBC的原因吧,或许是两个用的不是同一个JDBC.
|
少用null,它会产生奇怪的错误,其异常提示却只得一句,要么是一大堆,总之是让人看不懂。而且在抛出nullpointerexception之后,相关语句就不会执行了,也不会有应有的异常报告。
在google里搜索“NullPointerException”,即可找到这方面的讲解。
在google里搜索“NullPointerException”,即可找到这方面的讲解。
|
答案很明显,你用的JDBC不是同一版本的,JBuilder中的JDBC实现了
con.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
而tomcat中的JDBC则没有实现,建议更换JDBC.
con.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
而tomcat中的JDBC则没有实现,建议更换JDBC.