数据库连接出错:java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
运行时,出现在样的出错提示:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSConnection. <init> (Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at query.QueryFrame. <init> (QueryFrame.java:48)
at query.QueryFrame.main(QueryFrame.java:103)
////////////////////////////////////////////////////////
运行环境
IDE : Eclipse3.1
DB : SQLServer2000
Driver : MS 的官方驱动: msbase.jar 、 mssqlserver.jar 、 msutil.jar
/////////////////////////////////////////////////////////
原代码:
package query;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class QueryFrame extends JFrame implements ActionListener{
JTextField jf = new JTextField(20);
String[] value = { "姓名 ", "部门 ", "薪水 "};
JComboBox box = new JComboBox(value);
JButton find = new JButton( "查询 ");
JPanel panel_find = new JPanel();
JPanel panel_content = new JPanel();
Statement stmt = null;
public QueryFrame(){
this.setTitle( "查询系统 ");
Container c = this.getContentPane();
//完成了查找界面的设置
jf.addActionListener(this);
find.addActionListener(this);
panel_find.add(jf);
panel_find.add(box);
panel_find.add(find);
c.add(panel_find, "North ");
c.add(panel_content, "Center ");
this.setSize(400,400);
this.setLocation(200,100);
//连接SQL Server数据库
try{
Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver ");
Connection conn = DriverManager.getConnection( "jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=xdf ", "xdf ", "xdf ");
stmt = conn.createStatement();
}catch(Exception e){
e.printStackTrace();
}
this.setVisible(true);
}
public void actionPerformed(ActionEvent e){
panel_content.removeAll();
String item = (String)box.getSelectedItem();
//确定用户所选择的查询依据
if(item.equals( "姓名 ")){
item = "name ";
}
if(item.equals( "部门 ")){
item = "department ";
}
if(item.equals( "薪水 ")){
item = "salary ";
}
//获取用户输入的查询关键字
String content = jf.getText();
int i = 0;
try{
String sql = "select * from employee ";
if(!content.equals( " ")){
sql = sql + " where "+item+ " like '% "+content+ "% ' "; //组装查询语句
}
//执行查询语句,并显示查询结果
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
int id = rs.getInt(1);
String name = rs.getString(2);
String department = rs.getString(3);
int salary = rs.getInt(4);
JLabel label = new JLabel(id + " " + name + " " + department + " " + salary);
JPanel panel = new JPanel();
panel.add(label);
panel_content.add(panel);
i++;
}
}catch(Exception e1){
e1.printStackTrace();
}
panel_content.setLayout(new GridLayout(i,1));
panel_content.validate();
}
public static void main(String[] args) {
new QueryFrame();
}
}
/////////////////////////////////////////////////////
急啊~弄了半天了,还是不行,感觉代码没有错误!端口也改过了,也不行!~
麻烦大家帮忙啊!
[解决办法]
需要升级mssqlserver至少sp3版本可以解决这个问题
[解决办法]
如果你用的是XP或2003的话肯定是需要打补丁的
[解决办法]
打sp4!
[解决办法]
一般都是没打补丁问题,最低打到sp3,最好打到sp4
[解决办法]
老问题了
javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing 这个是端口问题
打了微软的Sp4补丁搞定了
给你个连接地址吧
http://www.microsoft.com/downloads/details.aspx?FamilyID=8e2dfc8d-c20e-4446-99a9-b7f0213f8bc5&DisplayLang=zh-cn#filelist
如果打补丁过程有问题(说什么挂起了一个服务)可以
打开注册表,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager中找到PendingFileRenameOperations删除
之后打补丁一定可以成功
[解决办法]
进DOS 用NETSTAT -AN看下1433端口开了没有
[解决办法]
换其他端口试试,1444什么的
[解决办法]
确定有没关掉防火墙,也就是楼上说的。我也遇到了类似问题,我的本机及其他机器都是原版未升级的都可以连接上,可是其中放这个程序的数据库服务器却也报这个错,我想不是要升级的问题,应该是用户验证也有可能。
[解决办法]
我也遇到过。打一个sp3以上的补丁就OK了
------解决方案--------------------
我昨天开始遇到这个问题,用命令netstat -an 查看确实没有打开1433侦听端口,换别的端口也不行。打个sp4的补丁也不行。 本人的操作系统是XP+sp2,安装SQL server2000是从网上找的方法装了。可能是因为这个原因导致SQL Server2000不能打开侦听端口。于是换个windows server2003,再装SQL Server2000+sp4,搞定,这就可以侦听1433端口了。
还有一个原因是数据库的名称写错了它也会出现这种错误。
[解决办法]
我上次装了补丁也不行。。。
后来发现问题是这样的:
我下载的sp4,双击它运行之后只是一个解压的过程。。
在解压的文件夹里再运行start.bat才是真正的“打补丁”!
希望这对你有帮助。。
解决的话记得给分哦。。