最近公司换服务器把数据库从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

注意: