使用SQL2005的驱动连接MSSQL2005,如下
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
URL = "jdbc:sqlserver://localhost:1433;DatabaseName=tempdb";
运行一段错误的SQL,抛出的异常却是:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]略。
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)
.........
会有这种情况吗?谢谢

解决方案 »

  1.   

    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 
    URL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb"; 
      

  2.   

    你的数据库是SQL2005的吗?
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); 
    URL   =   "jdbc:sqlserver://localhost:1433;DatabaseName=tempdb"; 
    这个没有写错啊!
    1楼写的是SQL2000的.你如果确定是SQL2005,那可能其他的有问题或驱动包放好了吗?
      

  3.   

    肯定是驱动的问题:[Microsoft][SQLServer   2000   Driver   for   JDBC][SQLServer]略
    看2000???
      

  4.   

    純編程文章網 http://www.KingOfCoder.com
      

  5.   

    应该是驱动的问题,楼主你检查一下jar包,确认一下驱动jar包是否放入了WEB-INF/lib目录下和容器的lib目录下。
    我没用过sqlserver2005,不知道是不是还要打补丁呢?sqlserver2000就要打补丁
      

  6.   

    再提供一下线索:
    如下两个都加载
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//SQL2000
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//SQL2005con= DriverManager.getConnection(jdbc:sqlserver://localhost:1433;DatabaseName=tempdb");//SQL2005标准写法是不是java把sql2005与sql2000的驱动做为一个SQL的驱动进行加载呢,后加载的无效,
    我记得应该是根据URL来选择驱动的?
    这有可能吗?
      

  7.   

    java.sql.SQLException:   [Microsoft][SQLServer   2000   Driver   for   JDBC][SQLServer]
    从错误信息可以看出你用的jdbc driver 是SQLServer 2000的,版本不一致.
    所以把SQLServer 2000 jdbc driver先卸载,装上2005的driver.
      

  8.   

    jdbc   driver版本不一样
    换成一样的就行了
      

  9.   

    com.microsoft.sqlserver.jdbc.SQLServerDriver是用来连接sqlserver的驱动,你是用来连接MSSQL的。
      

  10.   

    50419253 java高手群 一起探讨啊 
      

  11.   

    谢谢各位,问题找到了,这是2000驱动的BUG主要原因如下:与 SQL SERVER 2000 JDBC 驱动程序的驱动程序加载冲突
    若在同一进程中加载 Microsoft SQL Server 2000 JDBC 驱动程序和 
    Microsoft SQL Server 2005 JDBC 驱动程序,则在某些情况下,
    JDBC 驱动程序的 2000 版本将错误地接受用于 JDBC 驱动程序的
    2005 版本的 DriverManager.getConnection 方法调用。该问题的原因是:若先加载 JDBC 驱动程序的 2000 版本,
    则该程序将错误地接受“jdbc:sqlserver://”URL 前缀。  Microsoft 已意识到该问题,并计划在 JDBC 驱动程序的 2000 版本
    中解决该问题。要解决该问题,请先加载 JDBC 驱动程序类的 2005 版本,如下所示:Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); // 2005 版本
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); // 2000 版本这将确保“jdbc:sqlserver://”URL 前缀由
    JDBC 驱动程序的 2005 版本处理,而“jdbc:microsoft:sqlserver://”
    URL 前缀将由 JDBC 驱动程序的 2000 版本处理。
    再帮我看看下面这个贴子
    http://topic.csdn.net/u/20071202/14/b875aad5-5588-4779-bba1-7b2bd7a1c9e3.html