我自己写的一个连接数据库的程序:  
 
import  java.sql.SQLException;  
import  java.sql.Connection;  
import  java.sql.DriverManager;  
import  java.sql.Statement;  
import  java.sql.ResultSet;  
 
public  class  Jdbctest  
{  
           protected  Jdbctest()  
           {  
                         
           }  
             
           public  static  void  main(String  []  args)  
           {  
                       try  
                       {  
                                   Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");  
                                     
                       }  
                       catch(ClassNotFoundException  ce)  
                       {  
                                   System.out.println(ce);  
                       }  
                         
                       try  
                       {  
                                   String  url="jdbc:microsoft:sqlserver://localhost:1433;databassName  =friends";  
                                   Connection  con=DriverManager.getConnection(url,"sa","sa");  
                                   Statement  s=con.createStatement();  
                                   ResultSet  rs=s.executeQuery("select  *  from  friends");  
                                   while(rs.next())  
                                   {  
                                               System.out.print(rs.getString(1)+"\t");  
                                               System.out.print(rs.getString(2)+"\t");  
                                               System.out.print(rs.getInt(3)+"\t");  
                                               System.out.print(rs.getDate(4)+"\t");  
                                               System.out.print(rs.getInt(5)+"\t");  
                                               System.out.println("  ");  
                                   }  
                                   rs.close();  
                                   s.close();  
                       }  
                       catch(SQLException  ce)  
                       {  
                                   System.out.println(ce);  
                       }  
           }  
}  
 
但是运行的时候会产生ClassNotFoundException的异常,明显就是我的jdbc的驱动注册不成功,我查了一晚上csdn上相关的帖子,用提到的方法都不能解决,例如修改环境变量——CLASSPATH=  .;C:\driver\msbase.jar;C:\driver\mssqlserver.jar;C:\driver\msutil.jar  ,或者直接复制到/……/jre/lib/ext所在的ext目录,或者用jdk1.4都是不能解决问题。我用JCreator  Pro或者直接在命令行“java  Jdbctest”都是出同样的问题。  
 
而其中有些朋友说过自己也有类似的经历,不过有时候重装系统或者直接装windows2000就解决了。我用的是XP,jdk是用1.5,而我在ms下载的SQL  Server  2000  Driver  for  JDBC  Service  Pack  3似乎又没有明确说明支持1.5。  
 
所以我想问问大家是不是xp或者jdbc驱动版本的问题?我这种情况还有什么方法可以解决?  
 
弄了一晚上,也弄不好非常郁闷,而且小弟刚来,分不多,大家高抬贵手,帮帮忙啊~~~~~

解决方案 »

  1.   

    你需要注意的是1433端口开了没有?
    另外,你的SP3的补丁应该是手动不上去才行的,SP3的JDBC在JDK1.5下没有问题主要问题是XP特别是SP2把1433端口屏蔽了,需要打补丁如果一切确定没问题了,看看你有没有把驱动程序加到开发工具里
      

  2.   

    支持楼上,ClassNotFoundException异常是你的程序没找到驱动,以前我也出现过这样的问题,你把驱动放到/……/jre/lib/ext目录下不行吗?或者打打SP4补丁。
      

  3.   

    谢谢楼上朋友端口的问题我也注意到了,打了sqlserver sp4的补丁,应该是已经打开至于驱动我是已经安装了的,但无论是采用修改环境变量或者直接放进jdk相关的目录里面都还是问题依旧,郁闷死人了
      

  4.   

    你把驱动放到JDK安装目录下的jre/lib/ext目录下呢?试试~
      

  5.   

    解决方法1:
    CLASSPATH=  .;C:\driver\msbase.jar;C:\driver\mssqlserver.jar;C:\driver\msutil.jar  解决方法2:
    直接复制到/……/jre/lib/ext所在的ext目录以上两个方法我都分别试过,但是问题还是一样
      

  6.   

    还有听说如果放在/……/jre/lib/ext所在的ext目录的时候需要重启系统几次,我重启了三次但还是不行,这时我的CLASSPATH=.
      

  7.   

    错误信息:java.lang.ClassNotFoundException:com.microsoft.jdbc.sqlserver.SQLServerDriver
    java.sql.SQLException:No suitable driver找不到驱动,所以当然就抛出第二个没有找到合适驱动的异常我在网上又找到一个别人写好的测试连接的程序,运行后出现的第一句异常是一模一样的,证明真的是我的驱动有问题,但是试过很多办法都不行,难道真要重装系统装2000或者重装sqlserver?
    一下是我在网上找到的另一段代码,也是编译通过,运行时抛出找不到类的异常
    /************************************************
    /* 
    /*DbTest.java 
    /* 
    /******************************************* */  
    import java.sql.*;  public class DbTest 
    {                  
    Connection con;         
    Statement  sta;         
    ResultSet  rs;                  
    String driver;         
    String url;         
    String user;         
    String pwd;         
    public DbTest()         
    {             
    driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";;             
    url    = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName =StoreManager";             
    user   = "sa";             
    pwd    = "potsmart10";             
    init();         
    }         
    public void init()         
    {                 
    try{                         
    Class.forName(driver);                         
    System.out.println("driver is ok");                         
    con = DriverManager.getConnection(url,user,pwd);                         
    System.out.println("conection is ok");                     
    sta = con.createStatement();                     
    rs  = sta.executeQuery("select * from room");                     
    while(rs.next())                      
    System.out.println(rs.getInt("roomNum"));                  
    }catch(Exception e)                  
    {                          
    e.printStackTrace();                  
    }         
    }                  

    public static void main(String [] args)         
    {                 
    new DbTest();        
    }
    }
      

  8.   

    推荐你别用微软的jdbc,用jtds.jar这个好用一点。
      

  9.   

    请问下LZ
    你用什么编译器?
    这个问题主要是因为编译器没认到包,
    象jbuilder,
    虽然你加入到jdk里,
    但在工程属性里还是应该再引入的。
    如果用jbuilder时,
    Project-->Prject Properties-->Paths-->Required Libraries-->Addjcreatro时,也应该引入那三个包
      

  10.   

    感谢jsjboss(沉珂)啊~的确是你所说的问题,问题已经解决了,太谢谢了。对于楼上各位帮助我的朋友也表示感谢,一点小分不成请笑纳,结贴~