我的classpath路径是:.;%java_home%\lib\dt.jar;%java_home%\lib\tools.jar;c:\JDBC\msbase.jar;c:\JDBC\msutil.jar;c:\JDBC\mssqlserver.jar;java是没有问题的,JDBC的三个JAR文件放在C盘中的JDBC文件夹中(就只有这三个文件)。public class MSSQLTest
{
   public static void main(String args[])
    {  
        String RL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Student";
        String user =" ";//这里替换成你自已的数据库用户名
        String password = "";//这里替换成你自已的数据库用户密码
        String sqlStr = "select * from test_student";
        try
        {
         Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
         System.out.println("类实例化成功!");
         System.out.println("Fuck you jdbc");
         Connection con=DriverManager.getConnection(RL,user,password);
         System.out.println("创建链接对象成功!");
         Statement st=con.createStatement();
         System.out.println("创建Statement成功!");
         ResultSet rs=st.executeQuery(sqlStr);
         System.out.println("操作数据表成功!");
         System.out.println("---------------");
        
         while(rs.next())
         {
         System.out.println(rs.get("Sno")+" ");
         System.out.println(rs.get("Sname")+" ");
         System.out.println(rs.get("Sage")+" ");
         System.out.println(rs.get("Ssex")+" ");
         System.out.println(rs.get("Sclass")+" ");
         }
         rs.close();
         st.close();
         con.close();
        }
        catch(Exception e)
        {
         e.printStackTrace(System.out);
        }
    }}运行的时候的抛错:
  java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:164)
        at Ch04.MSSQLTest.<clinit><MSSQLTest.java:8>
为什么还找不到那三个JAR的路径呢?
我找了很久都找不到!

解决方案 »

  1.   

    jar包已经指定了。但是class你没有import 把用到的classimport一下。。
      

  2.   

    java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver 
    没有找到驱动 
    把msdabs.jar;mssqlserver.jar;msutil.jar放在工程的 WEB-INF\lib\下,或者 
    和Tomcat common\lib下 不行的话就2个下面都放上 不用配置classpath的
      

  3.   

    把msdabs.jar;mssqlserver.jar;msutil.jar放在你工程的WEB-INF\lib\下,和  
    和Tomcat common\lib下 
    如果你是Tomcat6 就直接放在Tomcat 的lib下
      

  4.   

    请为SQL SERVER 2000打上SP4的补丁.谢谢.
      

  5.   

    是不是JAR为导入  配制一下构建路径
      

  6.   

    把JDBC的驱动里的JAR文件加到你新建项目的库里面没有?
      

  7.   

    拜托人家是j2se的程序,tomcat都出来了啊?如果你是用jdk编译要设置环境变量,如果是eclipse的话可以在项目属性中添加这三个jar包。具体报错见下面说明:前提:1.sql server 2000 任意版本    //本人用的是个人版
          2.sql server 2000 sp3升级包
              你可以在这里下载http://www.bossed.com.cn/download/detailcp.asp?id=74
          3.sql server 2000 jdbc 驱动  //这个就需要自己找了!
          4.jdk1.4                      //以下的例子是该版本
    在以上条件满足的情况下,作以下事情
          1.建立新数据库名为:TESTDB ,并在其中建立一个名为test_student的表
              包括以下几列(Sno,Sname,Sage,Ssex,Sclass)  
          2.开始编写你自己的连接数据库的类(我这里是借鉴他人的版权不归我所有),你也可以用自己的方法 
    class Testj{
        public static void main(String args[])
        {  
            String RL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=TESTDB";
            String user ="king";//这里替换成你自已的数据库用户名
            String password = "sql";//这里替换成你自已的数据库用户密码
            String sqlStr = "select * from test_student";        try{    //这里的异常处理语句是必需的.否则不能通过编译!    
                Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
                System.out.println( "类实例化成功!" );
                System.out.println("slkdjf");
                Connection con = DriverManager.getConnection(RL,user,password);
                System.out.println( "创建连接对像成功!" );            Statement st = con.createStatement();
                System.out.println( "创建Statement成功!" );            ResultSet rs = st.executeQuery( sqlStr );
                System.out.println( "操作数据表成功!" );
                System.out.println( "----------------!" );            while(rs.next())
                {
                    System.out.print(rs.getInt("Sno") + "    ");
                    System.out.print(rs.getString("Sname") + "    ");
                    System.out.print(rs.getInt("Sage") + "    ");
                    System.out.print(rs.getString("Ssex") + "    ");
                    System.out.println(rs.getString("Sclass"));
                }
                rs.close();
                st.close();
                con.close();
            }
            catch(Exception err){
                err.printStackTrace(System.out);
            }
        }
    }
    下面进行调试:
      javac Testj.java
      java Testj
      如果正确输出应该是:
      类实例化成功!
    slkdjf
    创建连接对像成功!
    创建Statement成功!
    操作数据表成功!
    ----------------!
    2000    小刚               21    男    12        
    2001    小黄               22    女    12        
    2002    李娜               20    女    11        
    2003    王芳               19    女    null
    2004    黄明               22    男    11        
    2005    梅兰               21    女    12        
    2006    李玉               22    女    15        
    2007    李平               32    女    12        注意:这里有几点要说明
    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;
      可千万不要写错哟!环境变量设置如下:,;C:\Program Files\Java\jdk1.5.0\lib\dt.jar;C:\Program Files\Java\jdk1.5.0\lib\tools.jar;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;E:\java project
     2.sp3补丁包问题:
        如果你在编译时出现下列问题 那么你需要下载并安装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”,然后确定。