jsp 连接SqlServer 2000 数据库的困惑!
请问jsp连接数据库时总是报错,大家帮帮忙吧!先谢谢啦!
连接池配置了,但是测试通不过,我的测试文件如下:
<%@ page contentType= "text/html;charset=gb2312 "%>
<%@ page import= "java.sql.* "%>
<html>
<body>
<%
Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver ").newInstance();
String url= "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=nndrm ";
//pubs为你的数据库的
String user= "sa "; //用户名
String password= "sa "; //密码
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql= "select top 1 * from programdata ";
ResultSet rs=stmt.executeQuery(sql);
if(rs.next()) 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
javax.servlet.ServletException: [Microsoft][SQLServer JDBC Driver]Error establishing socket.
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:845)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:778)
org.apache.jsp.testsql_jsp._jspService(testsql_jsp.java:70)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
java.sql.SQLException: [Microsoft][SQLServer JDBC Driver]Error establishing socket.
com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
com.microsoft.jdbc.sqlserver.tds.TDSConnection. <init> (Unknown Source)
com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
java.sql.DriverManager.getConnection(DriverManager.java:512)
java.sql.DriverManager.getConnection(DriverManager.java:171)
org.apache.jsp.testsql_jsp._jspService(testsql_jsp.java:53)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
[解决办法]
打上sql补丁
[解决办法]
打上sq3/sq4补丁
[解决办法]
除了楼上说的。还需要,把一下这些,放在try catch中。
Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver ").newInstance();
String url= "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=nndrm ";
//pubs为你的数据库的
String user= "sa "; //用户名
String password= "sa "; //密码
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql= "select top 1 * from programdata ";
ResultSet rs=stmt.executeQuery(sql);
if(rs.next()) out.print( "数据库操作成功,恭喜你 ");
rs.close();
stmt.close();
conn.close();
[解决办法]
如运行程序时出现 "Error establishing socket " 错误,则应进行如下调试:
1 检查SQL SERVER 是否允许远程访问.具体步骤:
1)打开 "企业管理器 ",打开控制台根目录> SQL Server 组> 数据库
2)在相应 "数据库 "上单击右键,选择 "属性 "
3)选择 "连接 "选项卡,检查 "远程服务器连接 "下,RPC服务是否选择.
2 使用telnet IP地址 1433,系统是否提示连接出错,如系统提示出错
检查是否防火墙屏蔽了SQL SERVER 或 java IDE 的网络访问端口
如果是,关闭防火墙,重新启动SQL SERVER和java IDE,进行测试,
如果系统仍提示上述错误,尝试下列步骤
3 检查SQL SERVER 端口号及是否启用了TCP/IP协议,具体步骤:
1)打开 "企业管理器 ",打开控制台根目录> SQL Server 组> 数据库
2)在相应 "数据库 "上单击右键,选择 "属性 "
3)选择 "常规 "选项卡,点击 "网络配置 ",如启用的协议中无 "TCP/IP协议 "将其加入
4)选择 "TCP/IP协议 ",点击 "属性 ",检查其端口号是否为1433
5)如端口号为1433将其修改为其它端口号,修改jdbc连接语句,将端口号同样改为新启用的端口号,如jdbc:microsoft:sqlserver://server_name:1400(假设新端口号为 1400)
以下的方法你每种的去试试:
#检查一下sql server的connection有没有full.
#如果是认证的问题.
可到sql enterprice manager-> 指定server-> 内容-> 安全性.
把验证改为 SQL server 及 windows.
#点选属性检查一下port是否正确.
#执行%MSSQL_HOME%\80\Tools\Binn\SVRNETCN.exe
把TCP/IP启用.
#关掉防火墙.
#把SQL server update到sp3:
http://www.microsoft.com/sql/downloads/2000/sp3.asp
经我验证,一般升级到sp3就好用了!
[解决办法]
要连接数据源
在控制面板的管理工具里
[解决办法]
yeah920(如果您发的贴没人帮顶,请找我。)【专业】(☆☆☆☆☆) 所写的很全面了
[解决办法]
sqlsever2000连接配置一般遇到以下两个问题:
1.java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establis hing socket.主要原因是默认的数据库服务器端口 1433没有打开,无法直接连接。
给sql server2000打补丁sp3就行。
2.打上补丁后
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对
象名 '**** ' 无效。
已经连接上数据库,但是用户名密码有问题!
打开企业管理器---安全性---新建登录角色。修改相应jsp连接数据库文件代码。
这样就应该没有什么问题了吧!!
[解决办法]
看你的数据库是不是使用1433端口。防火墙是否屏蔽了1433端口了。
[解决办法]
刚学习配置方面不出问题是不正常的,好好查查资料!
我的异常网推荐解决方案:The server encountered an internal error () that prevented it from fulfilling this request.,http://www.myexception.cn/java-web/317.html