Servlet中JDBC连接数据库的问题

TechnoFantasy 2002-03-14 02:55:07
看下面的代码:

import java.util.*;
import java.sql.*;
import java.io.*;
import oracle.jdbc.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class AddMyUsers extends HttpServlet {
protected String m_userid;
protected String m_userfee;
protected String m_username;
protected String m_useraddress;
protected String m_st;

public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
String[] sName = request.getParameterValues("UserName");
String[] sAddr = request.getParameterValues("UserAddr");
String[] sID = request.getParameterValues("UserID");
String[] sFee = request.getParameterValues("UserFee");

m_userid = sID[0];
m_userfee = sFee[0];
m_username = sName[0];
m_useraddress = sAddr[0];

PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");

String title = "helloworld.title";

out.println("<title>" + title + "</title>");
out.println("</head>");
out.println("<body>");
try{
if (AddUser()==0){
out.println("<p>User add success!</p>");
out.println("<p>UserName : "+ sName[0] +"</p>");
out.println("<p>"+ sAddr[0] +"</p>");
out.println("<p>"+ sID[0] +"</p>");
out.println("<p>"+ sFee[0] +"</p>");
}
else
out.println("<p>"+ m_st +"</p>");
}
catch(Exception e)
{

}

out.println("</body>");
out.println("</html>");
}

Private int AddUser()
throws SQLException {

String s_step = "";
try
{
Integer nowUser = new Integer(m_userid);

if (nowUser.intValue() <= 0)
{
m_st = "UserID error. must";
return -1;
}

if (m_username == "")
{
m_st = "User name cant't be EMPTY!";
return -1;
}

Float f_Fee = new Float(0);

s_step += " step01";

Class.forName("oracle.jdbc.driver.OracleDriver");
s_step += " step1";

Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@172.18.8.4:1521:ORCL", "scott","tiger");

s_step += " step2";

Statement stmt = conn.createStatement ();

s_step += " step3";

// 调用库中名称为pro_add_user的存储过程
CallableStatement procnone = conn.prepareCall ("begin pro_add_user(?,?,?,?); end;");
s_step += " step4";
//加入参数
procnone.setInt (1, nowUser.intValue());
procnone.setString (2, m_username);
procnone.setString (3, m_useraddress);
procnone.setFloat (4,f_Fee.floatValue());
procnone.execute ();
s_step += " step5";

procnone.close();
m_st = "You have add a user name: "+m_username;
return 0;
}
catch(Exception e)
{
m_st = "Database connection error!" + s_step;
return -1;
}

}
}

最后页面输出是:Database connection error! step01
就是说执行到 Class.forName("oracle.jdbc.driver.OracleDriver"); 出错。
...全文
15 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
flytsu 2002-03-14
不客气,共同学习嘛!
怎么搞的,我以为第一次没有写上,就又写了一条。
想不到两条都写上了,是不是csdn的服务器太慢了?
回复
TechnoFantasy 2002-03-14
搞定
谢谢 flytsu(卡休)
回复
flytsu 2002-03-14
我也遇到过这个问题。解决问题的办法是找到oracle.jdbc.driver.OracleDriver这个类。

以我的机器为例:c:\tomcat; c:\oracle
这个类就在c:\oracle\ora81\jdbc\lib\classes12.zip里。首先把它复制到
c:\tomcat\classes\目录下,然后解压缩,会有两个目录出现(javax和oracle),然后删除c:\tomcat\classes\classes12.zip,重启tomcat调试程序
就ok了。

祝你好运。
回复
lijunyi 2002-03-14
共同学习
回复
rinehart 2002-03-14
你把exception本来得信息打印出来

catch(Exception e)
{
m_st = "Database connection error!" + s_step + e;
return -1;
}

要不然不知道是什么问题
回复
TechnoFantasy 2002-03-14
没有出错信息呀,服务器端的编译没有问题,就是在客户端浏览器中输出为上面的信息
回复
flytsu 2002-03-14
这个问题我也遇到过,如果你的机器安装了oracle。那么在...\oracle\ora81\jdbc\lib目录下有一个classes12.zip的文件。它里面包含了oracle.jdbc.driver.OracleDriver这个类。所以,你应该把它解压缩,会有
两个目录(javax和oracle),然后你把这两个目录(包含它下面的所有文件)复制到...\tomcat\classes\目录下。再重启tomcat,调试程序就ok了。
回复
iloveyouonlyonce 2002-03-14
为什么不打真正的出错信息出来,看是CLASSPATH,还是驱动程序包的问题?
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告