代码:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,java.io.*"%>
<html>
<body>
以下是从Ms sql server数据库读取的数据:<hr>
<table border=1>
<tr><td>id</td><td>书名</td><td>出版社</td><td>价格</td></tr>
<%! String trans(String chi)
{
String result = null;
byte temp [];
try
{
temp=chi.getBytes("gb2312");
result = new String(temp);
}
catch(UnsupportedEncodingException e)
{
System.out.println (e.toString());
}
return result;
}
%>
<%
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
Connection con=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev","bn","bn");
Statement stmt=con.createStatement();
ResultSet rst=stmt.executeQuery("select * from book;");
while(rst.next())
{
out.println("<tr>");
out.println("<td>"+trans(rst.getString("bookId"))+"</td>");
out.println("<td>"+trans(rst.getString("bookName"))+"</td>");
out.println("<td>"+trans(rst.getString("publisher"))+"</td>");
out.println("<td>"+rst.getFloat("price")+"</td>");
out.println("</tr>");
}
//关闭连接、释放资源
rst.close();
stmt.close();
con.close();
%>
</table>
</body>
</html>
报错:
javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:867)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:800)
org.apache.jsp.test_jsp._jspService(test_jsp.java:79)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
root cause
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
com.microsoft.jdbc.sqlserver.tds.TDSConnection.(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.test_jsp._jspService(test_jsp.java:48)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
10 个解决方案
#1
对了,补充一点,我把防火墙关掉后还是不能解决问题
#2
Connection con=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev","bn","bn");
连接服务器不应该用 127.0.0.1 ,不然你换一台机器就 不能工作了(程序在你的机器上他就找你的机器上的数据库,在他的机器上就找他的机器上的数据库),这样肯定有问题。
把上面的那个数据库的地址用 实际的 IP 或机器名表示,最后从配置文件里面读取机器 IP.
连接服务器不应该用 127.0.0.1 ,不然你换一台机器就 不能工作了(程序在你的机器上他就找你的机器上的数据库,在他的机器上就找他的机器上的数据库),这样肯定有问题。
把上面的那个数据库的地址用 实际的 IP 或机器名表示,最后从配置文件里面读取机器 IP.
#3
好象还是不行,不知道还有没有其他办法?到其他几台配置好一切后都能用,就是在偶的机子上就不能连得上,真是郁闷了.......
#4
好像是你数据库那台机的端口1433问题。我之前也遇过这样的情况,就是在启动了数据库之后还是发现那个1433端口没有开。
你试下把数据库连接到其他机器看看行不。
你试下把数据库连接到其他机器看看行不。
#5
NOTE: Untrusted applets cannot open a socket to a machine other than the originating host.
JDBC帮助文档那里有这个
会不会是我的系统版本问题?因为在安装的时候我也看到了Untrusted这个出现,不知道这个是什么意思?
JDBC帮助文档那里有这个
会不会是我的系统版本问题?因为在安装的时候我也看到了Untrusted这个出现,不知道这个是什么意思?
#6
你用的jdk是哪个版本,一般用jdk1.4用这个驱动的话
#7
1.4.2
#8
这个问题见过好多次了,很多老帖子
报javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
一般打上mssql的sp3补丁就可以了
报javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
一般打上mssql的sp3补丁就可以了
#9
这个问题打了补丁也不行,我后来选了个另外版本的系统来装后就可以正常连接了,我相信在前面版本的操作系统那里肯定附带了一些附件,使得无法连接数据库,具体是什么附件,我还真的找不出来......还是先不结帖子吧,让朋友们说说见解,看看有没有不换操作系统版本也能解决问题的办法呢?
#10
哇赛,这个贴子都快一年了,不知道哪位大大解决了问题,我也是这个状况,在单位可以,在家里的机器上就是死活不行,
#1
对了,补充一点,我把防火墙关掉后还是不能解决问题
#2
Connection con=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev","bn","bn");
连接服务器不应该用 127.0.0.1 ,不然你换一台机器就 不能工作了(程序在你的机器上他就找你的机器上的数据库,在他的机器上就找他的机器上的数据库),这样肯定有问题。
把上面的那个数据库的地址用 实际的 IP 或机器名表示,最后从配置文件里面读取机器 IP.
连接服务器不应该用 127.0.0.1 ,不然你换一台机器就 不能工作了(程序在你的机器上他就找你的机器上的数据库,在他的机器上就找他的机器上的数据库),这样肯定有问题。
把上面的那个数据库的地址用 实际的 IP 或机器名表示,最后从配置文件里面读取机器 IP.
#3
好象还是不行,不知道还有没有其他办法?到其他几台配置好一切后都能用,就是在偶的机子上就不能连得上,真是郁闷了.......
#4
好像是你数据库那台机的端口1433问题。我之前也遇过这样的情况,就是在启动了数据库之后还是发现那个1433端口没有开。
你试下把数据库连接到其他机器看看行不。
你试下把数据库连接到其他机器看看行不。
#5
NOTE: Untrusted applets cannot open a socket to a machine other than the originating host.
JDBC帮助文档那里有这个
会不会是我的系统版本问题?因为在安装的时候我也看到了Untrusted这个出现,不知道这个是什么意思?
JDBC帮助文档那里有这个
会不会是我的系统版本问题?因为在安装的时候我也看到了Untrusted这个出现,不知道这个是什么意思?
#6
你用的jdk是哪个版本,一般用jdk1.4用这个驱动的话
#7
1.4.2
#8
这个问题见过好多次了,很多老帖子
报javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
一般打上mssql的sp3补丁就可以了
报javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
一般打上mssql的sp3补丁就可以了
#9
这个问题打了补丁也不行,我后来选了个另外版本的系统来装后就可以正常连接了,我相信在前面版本的操作系统那里肯定附带了一些附件,使得无法连接数据库,具体是什么附件,我还真的找不出来......还是先不结帖子吧,让朋友们说说见解,看看有没有不换操作系统版本也能解决问题的办法呢?
#10
哇赛,这个贴子都快一年了,不知道哪位大大解决了问题,我也是这个状况,在单位可以,在家里的机器上就是死活不行,