用JAVABEAN封装数据库连接出现以下问题

terryxym 2006-08-07 09:12:01
如标题
JAVABEAN如下:
package terry;
import java.sql.*;
import java.lang.*;
import oracle.jdbc.driver.*;


public class employee {
java.sql.Connection sqlConn;
java.sql.Statement sqlStmt;
ResultSet sqlRst;
public employee(){
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
}catch(java.lang.ClassNotFoundException e){System.err.println("error");}
}

public ResultSet getResult()
{
try{
sqlConn=DriverManager.getConnection("jdbc:oracle:thin:@172.16.205.17:orcl","jsmis","jsmis");
sqlStmt=sqlConn.createStatement();
sqlRst=sqlStmt.executeQuery("select EMPLOYEE_NAME from EMPLOYEE");
}
catch(SQLException ex){System.err.println("???");}
return sqlRst;
}

public void close(){try{
sqlRst.close();
sqlStmt.close();
sqlConn.close();}catch(SQLException ex){System.err.println("...");}
}

}
JSP文件如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%@ page language="java"%>
<%@ page import="oracle.jdbc.driver.*"%>

<html>
<head><title>sql</title></head>
<body>
<jsp:useBean id="d" scope="page" class="terry.employee"/>
<%
ResultSet rs=d.getResult();
while(rs.next())
{out.print(""+rs.getString("EMPLOYEE_NAME"));}
d.close();
%>

<%
out.print("ddd");
%>

</body>
</html>

报错:
org.apache.jasper.JasperException
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:163)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:199)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:595)


root cause

java.lang.NullPointerException
at org.apache.jsp.sql_jsp._jspService(sql_jsp.java:70)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:163)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:199)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:595)

...全文
812 44 打赏 收藏 转发到动态 举报
写回复
用AI写文章
44 条回复
切换为时间正序
请发表友善的回复…
发表回复
langke93 2006-08-10
  • 打赏
  • 举报
回复
远程协助吧,加我QQ:276053123
nj_terry 2006-08-09
  • 打赏
  • 举报
回复
你的問題是個比較普邊的問題,Java裡面的ResultSet不像.Net裡面的DataSet,DataTable那麼好用.Java的ResultSet是與Statement,Connection相互依存的,而.Net裡面是可以分開的.所以你直接返回ResultSet,卻沒了與之相依存的Statement和Connection了(JSP與Java Application是有區別的),所以就報NullPointer的錯誤.所以在做數據庫JavaBean的封裝時,一般不採用返回ResultSet的形式,而是返回Connection,通過Connection去創建ResultSet等.
terryxym 2006-08-09
  • 打赏
  • 举报
回复
问题还没解决
哎~~~~~~~
怎么就没人能帮我呢
揭贴了
wokeke 2006-08-09
  • 打赏
  • 举报
回复
帮顶
terryxym 2006-08-09
  • 打赏
  • 举报
回复
只返回Connection当然是可以执行的
可是我要的是直接返回ResultSet啊
而且好多书上都是那么写的,为什么就我错。。。。。
而且我把Connection Statement ResultSet分别装在不同的函数里而且返回这三个值
可是依然在JSP下执行的时候错误
可是只执行Connection的时候就没错误
用JAVA就能通过,诡异啊,我晕。。。。。。
再看下我的代码吧
是重新写的
package terry;
import java.sql.*;
import java.lang.*;
import oracle.jdbc.driver.*;

public class webconnection{
Connection conn;
Statement stmt;
ResultSet rs;
public webconnection(){}
public Connection connect(){
try{
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
conn=DriverManager.getConnection("jdbc:oracle:thin:@172.16.205.17:1521:orcl","jsmis","jsmis");
}catch(Exception e){}
return conn;}
public Statement state(){
try{stmt=conn.createStatement();
}catch(Exception e){}
return stmt;}
public ResultSet result(){
try{rs=stmt.executeQuery("select * from EMPLOYEE where EMPLOYEE_NAME='吴昊'");
}catch(Exception e){}
return rs;}

JSP文件
<%@ page contentType="text/html; charset=gb2312" %>
<%@ page language="java" import="java.sql.*"%>
<html>
<head>
<title>
hello
</title>
</head>
<body>
<jsp:useBean id="main" scope ="page" class="terry.webconnection"/>
<%
Connection conn=main.connect();
Statement stmt=main.state();
ResultSet rs=main.result();
rs.close;
stmt.close();
conn.close();
out.print("D");%>
</body>
</html>
beauty9235 2006-08-08
  • 打赏
  • 举报
回复
看代码,没有什么错哈,估计是没有找到jar包,把数据库的jar考到WIN-INF/lib/下试试,我这没有oracal不然可以帮你查查错,不发发个安装给俺吧,QQ21429503
terryxym 2006-08-08
  • 打赏
  • 举报
回复
大家帮忙看下怎么才能拿到数据库里面的查询结果?
terryxym 2006-08-08
  • 打赏
  • 举报
回复
程序上是没问题了
我把所有的方法都放到一个函数里就能执行了
可是逻辑上就有问题了
数据库里的东西取不出来
没办法通过JSP来看
我改动的程序如下
employee.java
package terry;
import java.sql.*;
import java.lang.*;
import oracle.jdbc.driver.*;

public class employee {
java.sql.Connection sqlConn;
java.sql.Statement sqlStmt;
ResultSet sqlRst;
public employee(){
}

public void getResult()
{
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
}catch(java.lang.ClassNotFoundException e){}

try{
sqlConn=DriverManager.getConnection("jdbc:oracle:thin:@172.16.205.17:1521:orcl","jsmis","jsmis");
sqlStmt=sqlConn.createStatement();
sqlRst=sqlStmt.executeQuery("select EMPLOYEE_NAME from EMPLOYEE");
while(sqlRst.next()){System.out.println(""+sqlRst.getString("EMPLOYEE_NAME"));}
}
catch(SQLException ex){}try
{
sqlRst.close();
sqlStmt.close();
sqlConn.close();}catch(SQLException ex){}
}
}

sql.jsp
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%@ page language="java"%>
<%@ page import="oracle.jdbc.driver.*"%>

<html>
<head><title>sql</title></head>
<body>
<jsp:useBean id="d" scope="page" class="terry.employee"/>
<%
d.getResult();
%>

<%
out.print("ddd");
%>

</body>
</html>
Sunny319 2006-08-08
  • 打赏
  • 举报
回复
学习一下
terryxym 2006-08-07
  • 打赏
  • 举报
回复
怎么没人回答啦
自己再顶下
terryxym 2006-08-07
  • 打赏
  • 举报
回复
我直接把连接写到JSP里面是可以执行的
这样可以说明我的配置是对的吧
lingyu 2006-08-07
  • 打赏
  • 举报
回复
光驱动名字对没用,要把oracle下的class12.zip拷贝到web server相应class目录下
minisun2000 2006-08-07
  • 打赏
  • 举报
回复
java.lang.NullPointerException 空指针异常
看看参数传递,包引入,驱动程序等等
这个异常范围太广泛了,谁能知道具体是什么引起的
terryxym 2006-08-07
  • 打赏
  • 举报
回复
驱动和库名还有字段名都是正确的
lingyu 2006-08-07
  • 打赏
  • 举报
回复
看错误信息是rs为空
检查一下
oracle jdbc驱动有没有安装
数据库表名和字段名是否正确
interpb 2006-08-07
  • 打赏
  • 举报
回复
这样吧

你先用不在jsp里面调用

直接写个测试类 看看输出什么
terryxym 2006-08-07
  • 打赏
  • 举报
回复
说我数据库连接有问题的具体说说错在哪啊
我做天看了半天都没看出错来
而且我觉得和书上的例子很像
可是为什么我就执行不了呢
terryxym 2006-08-07
  • 打赏
  • 举报
回复
就是这个啊
叫stderr.log
interpb 2006-08-07
  • 打赏
  • 举报
回复
stderr 开头的

这个不是吧
baselive 2006-08-07
  • 打赏
  • 举报
回复
可能你的数据库连接那有点问题
加载更多回复(24)

81,115

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧