要疯掉了!数据库连接不上!!给答案者重谢!!!

cjfspider 2003-08-02 09:02:07
各位姐姐哥哥,帮帮弟弟吧!
我在命令行下连接MSSQL数据库已成功,可是在jsp中无论如何总出现"HTTP Status 500 "的错误。
我的服务器配置是j2sdk-1_4_1-rc-windows-i586,MS SQL Server 2000 JDBC,tomcat-4.1.18,
在C:\Program Files\Apache Group\Tomcat 4.1\webapps\ROOT目录下放一文件testsqlserver.jsp,详细内容为:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%
String sql1 = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
Class.forName(sql1);
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
//pubs为你的数据库的
String user="sa";
String password="sa";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement();
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%}%>
<%out.print("成功!");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>

报错提示有一大篇,如下:
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: com.microsoft.jdbc.sqlserver.SQLServerDriver
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:248)
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:260)
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:2415)
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:170)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
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:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530)
at java.lang.Thread.run(Thread.java:536)


root cause

javax.servlet.ServletException: com.microsoft.jdbc.sqlserver.SQLServerDriver
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:533)
at org.apache.jsp.testsqlserver_jsp._jspService(testsqlserver_jsp.java:78)
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:204)
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:260)
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:2415)
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:170)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
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:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530)
at java.lang.Thread.run(Thread.java:536)



--------------------------------------------------------------------------------

Apache Tomcat/4.1.18


...全文
100 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
oswicer 2004-02-13
  • 打赏
  • 举报
回复
还有一个可能的问题,看看驱动是不是太旧了,去下一个最新的,我遇到过这类找不出错误的莫名其妙的问题,而且不止一次,换一个驱动就可以了,不过也有可能是驱动太新了需要换旧的
joezhou2003 2004-02-13
  • 打赏
  • 举报
回复
好像没有try catch!
tufanshu 2004-02-13
  • 打赏
  • 举报
回复
package mydb;
import java.sql.*;
import javax.servlet.http.*;
import mydb.*;
public class mydb implements HttpSessionBindingListener
{
private Connection connection;
private Statement statement;
//private myCM.PropStore ps;
/*Move to properties file assignment, in DBConnect_en_US.properties*/
private String driver =
"com.microsoft.jdbc.sqlserver.SQLServerDriver";
private String dbURL =
"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=merchant";
private String login =
"sa";
private String password = "";

public mydb()
{
try
{
java.io.File f = new java.io.File(".");
}
catch(Exception e )
{
System.err.println("Problem with DBConnection init: " +
e.getMessage() );
e.printStackTrace();
}
}
/*设置驱动方法*/
public void setDriver (String sDriver)
{
if(sDriver!=null)
driver = sDriver;
}
/*得到驱动方法*/
public String getDriver()
{
return driver;
}
/*设置连接字符串*/
public void setDbURL(String sDbURL)
{
if(sDbURL!=null)
dbURL = sDbURL;
}
/*返回连接字符串*/
public String getDbURL()
{
return dbURL;
}
/*设置用户名*/
public void setLogin (String sLogin)
{
if (sLogin != null)
login=sLogin;
}
/*返回用户名*/
public String getLogin()
{
return login;
}
/*设置密码*/
public void setPassword(String sPassword)
{
if (sPassword != null)
password = sPassword;
}
/*返回密码*/
private String getPassword()
{
return password;
}
/*断开连接*/
public void Disconnect()
{
close();
}
/*连接数据库*/
private void getConn()
{
try
{
Class.forName(driver);
connection=DriverManager.getConnection(dbURL,login,password);
System.out.println("conn:"+connection);
statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
}
catch(ClassNotFoundException e)
{
System.out.println("ConnectionManager:driver unavailable");
connection = null;
}
catch (SQLException e)
{
System.out.println("ConnectionManager:driver not load");
connection = null;
}
}
public Connection getConnection()
{
if (connection ==null)
getConn();
return connection;
}
public void commit() throws SQLException
{
connection.commit();
}
public void rollback() throws SQLException
{
connection.rollback();
}
public void setAutoCommit(boolean autoCommit) throws SQLException
{
connection.setAutoCommit(autoCommit);
}
public ResultSet executeQuery(String sql) throws SQLException
{
if (connection == null||connection.isClosed())
getConnection();
return statement.executeQuery(sql);
}
public int executeUpdate(String sql) throws SQLException
{
if (connection == null||connection.isClosed())
getConn();
return statement.executeUpdate(sql);
}
public void valueBound(HttpSessionBindingEvent event)
{
System.err.println("Connection :in the valueBound menthod");
try
{
if(connection ==null||connection.isClosed())
{
connection = DriverManager.getConnection(dbURL);
statement = connection.createStatement();
}
}
catch (SQLException e)
{
e.printStackTrace();
connection = null;
}
}
public void valueUnbound(HttpSessionBindingEvent event)
{
try
{
if (connection!=null||!connection.isClosed())
connection.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
finally
{
connection = null;
}
}

public void close()
{
try
{
if(connection!=null||connection.isClosed())
connection.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
}
/*编码转换方法*/
public String ISOtoGB(String str) {
try
{
return new String( str.getBytes( "8859_1" ), "GB2312" );
}
catch(Exception e)
{
return "can't convert ISOtoGB";
}
}

public String GBtoISO(String str) {
try
{
return new String( str.getBytes( "GB2312" ), "8859_1" );
}
catch(Exception e) {
return "can't convert GBtoISO";
}
}

/*main 方法*/
public static void main(String[] args)
{
mydb cm = new mydb();
if (cm.getConnection() == null)
System.err.println("proble getting a connection");
try
{
ResultSet rs = cm.executeQuery("select * from tbuser");
if (rs != null)
{
while (rs.next())
{
System.out.println("User in the MYSql DB: " +rs.getString("user_name"));
String user_name = cm.ISOtoGB(rs.getString("user_name"));
System.out.println("GB:"+user_name);
user_name = cm.GBtoISO(rs.getString("user_name"));
System.out.println("ISO:"+user_name);
}
}

}
catch (SQLException se)
{
se.printStackTrace();
}

}


}

书上做好的bean感觉很有用,你可以用用看。用微软自己的驱动不用设置odbc
floweryz 2004-02-13
  • 打赏
  • 举报
回复
你配置odbc了吗?
luckboy1017 2004-02-13
  • 打赏
  • 举报
回复
好象在需要在控制面斑数据库管理要添加驱动吧
Leemaasn 2004-02-13
  • 打赏
  • 举报
回复
我也Up一下

我也Up两下

!!!
steveyue 2004-02-13
  • 打赏
  • 举报
回复
此外,我的环境是win2000pro+j2sdk-1_4_1-rc-windows-i586+MS SQL Server 2000 JDBC+tomcat-4.1.18,
steveyue 2004-02-13
  • 打赏
  • 举报
回复
1、情确定数据库的用户名和密码;(我的系统:user="sa"password="")
2、数据库中是否有test表;(换了一个库,查询一个已存在的表)
你的代码我改掉了如上两处错误,既可以正确运行。如果还不能正确运行的话,那就是你的设置问题了。楼上兄弟都有说明,情参考检查一下。
ManFirst 2004-02-13
  • 打赏
  • 举报
回复
奇怪的错不是包也不是用户的问题也不是连接字符的问题.
所以看一下网络吧.
3891681 2004-02-13
  • 打赏
  • 举报
回复
将Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib里的三个文件拷贝到:\Tomcat 4.1\common\lib中再试一下
yanxibang 2004-02-13
  • 打赏
  • 举报
回复
一)各种数据库jdbc驱动程序
oracle驱动程序:http://otn.oracle.com/software/tech/java/sqlj_jdbc/content.html或者C:\oracle\ora81\jdbc\lib\classes12.zip(注意版本)
mysql驱动程序:http://www.mysql.com
sqlserver驱动程序:http://www.microsoft.com/china/sql/default.asp 下载setup.exe文件,再安装
二)驱动的安装
1)环境:WIN2K+j2sdk-1_4_1+tomcat连oracle817 将class12.zip文件改名为class12.jar,然后放到你的jsp目录的WEB-INF/lib下就可
连接程序代码如下:
<%@page contentType="text/html;charset=gb2312"%>
<%@page import="java.sql.*"%>
<%String sDBDrvier="oracle.jdbc.driver.OracleDriver";
String user="dq";
String pwd="dqdq";
String sConnStr="jdbc:oracle:thin:@192.168.0.49:1521:test"; //其中test是数据库的sid
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
String sqlStr="select * from t_user";
try{
Class.forName(sDBDrvier);
}
catch(ClassNotFoundException e)
{
System.out.println("数据库驱动类没找到");
}
try{
conn=DriverManager.getConnection(sConnStr,user,pwd);
stmt=conn.createStatement();
rs=stmt.executeQuery(sqlStr);
while(rs.next())
{
out.print(rs.getString("username"));
}
}
catch(SQLException ex)
{
System.out.print(ex.getMessage());
}
%>
报错原因:
The Network Adapter could not establish the connection 这可能是oracle的服务OracleServiceXB和OracleOraHome81TNSListener没有启动
Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=135294976)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4)))) sid错误
No suitable driver 没有安装驱动程序
驱动程序版本不一致
2)环境:WIN2K+j2sdk-1_4_1+tomcat连sql server2000 将msbase.jar,mssqlserver.jar,msutil.jar放到你的jsp目录的WEB-INF/lib下就可
连接程序代码如下:
<%@page contentType="text/html;charset=gb2312"%>
<%@page import="java.sql.*"%>
<%String sDBDrvier="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String user="sa";
String pwd="781213";
String sConnStr="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test";
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
String sqlStr="select * from t_user";
try{
Class.forName(sDBDrvier).newInstance();
}
catch(ClassNotFoundException e)
{
System.out.println("数据库驱动类没找到");
}
try{
conn=DriverManager.getConnection(sConnStr,user,pwd);
stmt=conn.createStatement();
rs=stmt.executeQuery(sqlStr);
while(rs.next())
{
out.print(rs.getString("u_name"));
}
}
catch(SQLException ex)
{
System.out.print(ex.getMessage());
}
%>




连接access使用jdbc-odbc桥不配置odbc
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException ce)
{
System.out.println("SQLException:"+ce.getMessage());
}
try
{
String DbUrl = "jdbc:odbc:DRIVER={MICROSOFT ACCESS DRIVER (*.mdb)};DSN='';DBQ=E:\\ms.net\\sendmessage\\vbRs232\\mobilemessage.mdb";
String user = "";
String password = "";
Con=DriverManager.getConnection(DbUrl,user,password);
stmt = Con.createStatement();
}
catch(SQLException e)
{
System.out.println("SQLException"+e.getMessage());
}



























JasonCao 2003-08-03
  • 打赏
  • 举报
回复
最好检查或者重写或者从其他地方复制jdbc url字符串。
zhjjava 2003-08-03
  • 打赏
  • 举报
回复
你把JDBC那几个包的路径加进去没有,或是把那几个包考到应用服务器的 LIB下!
还有就是楼上的说的把localhost改为127.0.0.1或你机器的IP,是有时在这儿出问题!
Wnyu 2003-08-03
  • 打赏
  • 举报
回复
String url="jdbc:microsoft:sqlserver://your_PC_IP:1433;DatabaseName=pubs";
9731boy 2003-08-02
  • 打赏
  • 举报
回复
servlet.jar 的路径呢?加了没有?
yukicy 2003-08-02
  • 打赏
  • 举报
回复
你试试改写一下你的url
conning333 2003-08-02
  • 打赏
  • 举报
回复
建议打印一些调试信息看看到底是哪行出错!

81,116

社区成员

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

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