SQL Server的JDBC驱动问题

最近公司换服务器把数据库从SQL Server 2005 升级到 SQL Server 2008。这样,以这个数据库对接的两个系统全部瘫痪,无法进行数据库对接。
首先立即判断是是数据库的驱动问题,好不容易从网上找到了了驱动,下载下来,发现里面有两个文件一个是sqljdbc.jar,另外一个是sqljdbc4.jar,于是将驱动换掉,两个全部导进去,加到CLASSPATH路径,发现,还是不行。两个系统分别出现以下错误:

Exception in thread “main” java.lang.UnsupportedClassVersionError: Bad version number in .class file
 at java.lang.ClassLoader.defineClass1(Native Method)
 at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
 at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
 at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
 at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
 at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
 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 com.peak.batch.commodityimport.CommodityInfoImport.importOrderInfo(CommodityInfoImport.java:649)
 at com.peak.batch.commodityimport.CommodityInfoImport.main(CommodityInfoImport.java:108)

java.lang.UnsupportedOperationException: 此驱动程序不支持 Java Runtime Environment (JRE) 1.6 版。请使用支持 JDBC 4.0 的 sqljdbc4.jar 类库。
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.(SQLServerConnection.java:223)
 at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:840)
 at java.sql.DriverManager.getConnection(DriverManager.java:582)
 at java.sql.DriverManager.getConnection(DriverManager.java:185)
 at com.epeaksport.imports.ImportStock.importGoods(ImportStock.java:73)
 at com.epeaksport.imports.ImportStock.execute(ImportStock.java:35)
 at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
 at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525)

后来仔细看了帮助文档,发现以下这段话:

JAR 说明
sqljdbc.jar sqljdbc.jar 类库提供对 JDBC 3.0 的支持。sqljdbc.jar 类库要求使用 5.0 版的 Java 运行时环境 (JRE)。连接到数据库时,在 JRE 6.0 上使用 sqljdbc.jar 会引发异常。 

注意注意:

JDBC Driver 2.0 不支持 JRE 1.4。使用 JDBC Driver 2.0 时必须将 JRE 1.4 升级至 JRE 5.0 或更高版本。在某些情况下,您可能需要重新编译应用程序,因为它可能与 JDK 5.0 或更高版本不兼容。有关详细信息,请参阅 Sun Microsystems 网站上的文档。

sqljdbc4.jar sqljdbc4.jar 类库提供对 JDBC 4.0 的支持。它不仅包括 sqljdbc.jar 的所有功能,还包括新增的 JDBC 4.0 方法。sqljdbc4.jar 类库要求使用 6.0 或更高版本的 Java 运行时环境 (JRE)。在 JRE 1.4 或 5.0 上使用 sqljdbc4.jar 会引发异常。 

注意注意:

如果应用程序必须在 JRE 6.0 上运行,即使该应用程序不使用 JDBC 4.0 功能,也应使用 sqljdbc4.jar

于是,明白,前一个去掉驱动JDBC4.JAR,后一个去掉JDBC.JAR,搞定。

JDBC,Jar包下载地址:

http://go.microsoft.com/fwlink/?LinkId=144635&clcid=0×804

相关日志

  • Json下的Positioned Update not supported解决方法
    今天使用json输出的时候报了这个错误,原因找了一下,发现使用hibernate自动生成的一些类会出现这个情况,主要是因为hibernate使用了延迟加载所造成的缘故。 因为我的系统前台使用的jquery-easeyui的dataGrid表格,所以,只能重新建一个类来进行。代码如下 package com.mrzeng.action; import java.util.Array...
  • Json工具类
    jqGrid在处理多字段查询的时候要使用json数据,于是,参考了网上的一些写法,写了一个json工具类。其中那个时间格式化,是为了解决json在处理java的java.util.Date出现的问题。 代码如下: @SuppressWarnings("unchecked") public class JsonUtils { /** * 从一个JSON 对象字符...

PO一下