package myclass;import java.sql.*;public class Jdbc{ 
    public Connection getConnection() 
    { 
      String driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
      String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=stuDB";
      Connection con=null;
      Statement st;
      ResultSet rs;
        try {                    
            Class.forName(driver); 
            con=DriverManager.getConnection(url,"sa","");
             }
        catch(ClassNotFoundException ex){   
            System.out.println("DriverError");   
            ex.printStackTrace();   
             }   
         catch(SQLException ex){   
            System.out.println(   "Connection error");   
            ex.printStackTrace();   
             }          return   con   ;         }
 
}
-----
package myclass;import java.sql.*;public class Jdbctest{
Jdbc con=new Jdbc();
    void dispaly(){

try{
Connection cn = con.getConnection();
String sql="Select * from SC";
Statement s = cn.createStatement();
ResultSet rs = s.executeQuery(sql);
while(rs.next()){
System.out.print(rs.getString(1));
System.out.print(rs.getString(2));
System.out.print(rs.getString(3));

}
}
catch(SQLException ce){
System.out.print(ce);
}

}


public static void main(String [] args){
Jdbctest jt = new Jdbctest();
jt.dispaly();
}
   }
------
报错
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)
Connection error 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(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source)
at myclass.Jdbc.getConnection(Jdbc.java:15)
at myclass.Jdbctest.dispaly(Jdbctest.java:10)
at myclass.Jdbctest.main(Jdbctest.java:30)
Exception in thread "main" java.lang.NullPointerException
at myclass.Jdbctest.dispaly(Jdbctest.java:12)
at myclass.Jdbctest.main(Jdbctest.java:30)
----
我是在 eclipse 下写的代码 3个驱动也装在了D:\apache-tomcat-5.5.23\common\lib下  但是就是连接不上去 找了一天了 没找到  我用的是SQL2000 我基本上都是用最新的补丁了
请问大家 这个问题是出在那里啊  谢谢了

解决方案 »

  1.   

    装了三个驱动,还要打sp3或sp4补丁~
      

  2.   

    确定装了补丁的话(运行了解压后的setup.bat文件),服务器端口配置都没有错的话,要是还不行,你就直接把那三个驱动包导入
    到eclipse中右击工程名-->build path-->config build path-->libraies-->add jrefile(你的那三个驱动包)
      

  3.   

    加驱动,有时候ms提供的驱动不行的话尝试下第三方的驱动。
    然后给sql打补丁
      

  4.   

     Class.forName(driver).newInstance();
    给你的接口开辟空间
      Statement   st =null; 
     ResultSet   rs = null;
    最后关闭资源:
     
      

  5.   

    这个是没有打补丁的问题,或者你打了,但是没有成功!
    1.路径问题:
      你必须配置你的classpath路径否则他在编译时会抱错
      java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
            at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
            at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
            at java.lang.Class.forName0(Native Method)
            at java.lang.Class.forName(Class.java:141)
            at Test.main(Test.java:11) 
    你的路径应该是这样配置:你可以在在安装jdbc驱动后看那里的帮助文档(是英文的);
    //这里指在xp系统下
     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\mssqlserver.jar;
                  C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msutil.jar;
      可千万不要写错哟!
     2.sp补丁包问题:
        如果你在编译时出现下列问题 那么你需要下载并安装sp3补丁包
       java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establis
    hing 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(Unknown Source)
            at java.sql.DriverManager.getConnection(Unknown Source)
            at Test.main(Test.java:14) 
    3.权限问题    
       如果你出现类似这样的问题
       类实例化成功!
    slkdjf
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]用户 'king' 登录失败。
    原因: 未与信任 SQL Server 连接相关联。
        at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
        at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
        at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
        at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
        at com.microsoft.jdbc.sqlserver.tds.TDSLoginRequest.processReplyToken(Unknown Source)
        at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(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 Testj.main(Testj.java:14)
        
    原困是未设置SQL SERVER登录认证模式为混合认证模式,因为SQL SERVER默认安装后认证模式为WINDOWS认证模式,从而导致出错。
    解决方法:启动SQLSERVER企业管理器,选择要进行认证模式设置的服务器。右击该服务器,在弹出菜单中选择属性,SQL SERVER将
    弹出属性对话框在属性对话框中选择安全性选项,在身份验证处选择“SQL Server和Windows”,然后确定。