首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

数据库连接疏失:java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error

2011-11-11 
数据库连接出错:java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing

数据库连接出错: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才是真正的“打补丁”!
希望这对你有帮助。。
解决的话记得给分哦。。

热点排行