好久了没有解决这个问题
程序是:
import java.sql.*;public class jdbctest2 {
public static void main(String []args){
Connection conn=null;
Statement sql=null;
ResultSet rst=null;
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
System.out.println("数据库驱动程序注册成功");

conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mm","sa","");//mm是我配置的数据源名称
System.out.println("数据库连接成功");

sql = conn.createStatement();

rst=sql.executeQuery("select * from Orders");
while (rst.next()){
String orderId=rst.getString(1);
System.out.println("用户ID:"+orderId);
}
} catch (ClassNotFoundException e) {
System.out.println("数据库注册失败");
e.printStackTrace();
}catch (SQLException e) {
System.out.println("数据库连接失败");
e.printStackTrace();
}
finally{
if(rst!=null){
try {
rst.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
rst=null;
}
if(sql!=null){
try {
sql.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sql=null;
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
conn=null;
}
}
}
}
}
结果出现:
java.sql.SQLException:[Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
              at com.microsoft.jdbc.base....
              ...
              at jdbctest2.main(jdbctest2.java:12)
哪位帮我解决一下,感激不尽...

解决方案 »

  1.   

    可能性有3:
    1、没打Sql Server的SP3以上补丁
    2、SQLServer服务没启
    3、端口不是1433最大可能
    1:98%
    2:1.5%
    3:0.5%
      

  2.   

    1:补丁是指SQL2000JDBC驱动SP3吧,我打了这个补丁啊,另外我装了Microsoft SQL Server 2000 Driver for JDBC,配置好了CLASSPATH:
    C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msbase.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msutil.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\mssqlserver.jar
    2:SQL已开,排除
    3:端口不知道了,是这个问题的话该怎么解决呢?
    问题补充:
    程序输出的结果中第一行是:数据库驱动程序注册成功
      

  3.   


    jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=你的数据库名
    直连就不要用ODBC数据源了
      

  4.   

    谢谢welshem(天堂客)的提醒,原来我就是用的数据库名,但是也不行. 
    lixiaoxue85(蛮野蛮):你是说关了防火墙试试么? 也不行.正急着用...偏偏出现这样的问题,气!
      

  5.   

    你在SQL企业管理器中右击SQL服务器名(大多是LOCAL)
    选"属性",按"网络配置...",点"TCP/IP",选"属性..."
    看一个端口吧
      

  6.   

    端口我不清楚,是不是随便一个数字就可以啊?
    welshem(天堂客) ,还请多多指教
      

  7.   

    不是,
    jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mm
    你用的是1433
      

  8.   

    sql server的默认端口是8080 你用8080看看.mysql才是1433
      

  9.   

    那我在sql server里面应该怎么改呢?我知道程序里面也要改成sql server一样的.
    把程序中的改为8080也不行啊...
      

  10.   

    算了,结了吧,感谢大家对我这个问题的关注,尤其感谢 welshem(天堂客)的指教 
      

  11.   

    建议使用sql2005的jdbc驱动 
    我以前就是用的sql2000的 就出现了很多莫名其妙的问题
    LZ 也试下 可能管用呢 嘿嘿`
      

  12.   

    1:补丁是指SQL2000JDBC驱动SP3吧,我打了这个补丁啊,我怎么感觉就是补丁的问题呢,补丁里面没有'jdbc驱动'什么什么的啊,这个补丁和jdbc没关系啊
    你出现的错误明显和没打补丁出现的错误一样,建议你去重新下最新的补丁重新打一下再试试
    微软网站去下,文件名是下面两个中间一个,具体哪个我忘了,
    SQL2000.AS-KB884525-SP4-x86-CHS.exe
    SQL2000-KB884525-SP4-x86-CHS.exe另外jdbc驱动,你只要把那3个jar包放在lib文件夹里就可以了,不需要安装什么
      

  13.   

    liufei8463(武汉小兵):
    8080?不要乱说,1433是SQLServer的默认端口
    lgyun () :
    你在SQL企业管理器中右击SQL服务器名(大多是LOCAL)
    选"属性",按"网络配置...",点"TCP/IP",选"属性..."
    看一个端口吧
      

  14.   

    sql server的默认端口是8080 你用8080看看.mysql才是1433这位仁兄说错了吧,sql server端口本来就是1433,8080这个端口一般没什么人用吧?
    好象这个一般是tomcat或者jboss只类的web容器才用呢,这属于http端口
      

  15.   

    按步骤,
    安装sqlserver,
    安装sqlserver sp4驱动
    把msbase.jar,mssqlserver.jar,msutil.jar,3个jar包放到程序的lib目录jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mm这样再连接99%不会出错的,帮人调试过太多次这个东西了,
      

  16.   

    楼上各位:
    Error establishing socket说明SQL Server的JDBC驱动已起作用了只是JDBC无法与SQL Server接上头所以只存在
    1、没打Sql Server的SP3以上补丁(SQLServer没接头的技术)
    2、SQLServer服务没启(接头的时间到了,人没来)
    3、端口不是1433(走错路了没会面)
      

  17.   

    1、没打Sql Server的SP3以上补丁(SQLServer没接头的技术)
    2、SQLServer服务没启(接头的时间到了,人没来)
    3、端口不是1433(走错路了没会面)SQLServer服务没启不太可能吧,这个都没起还连啥.....
    端口........基本没人会去改这个吧
    所以我认为,肯定是没打补丁,或者补丁没打好,不存在别的可能