JDBC Driver2.0的兩個(gè)連接問(wèn)題
機(jī)器上配置的JDK為1.6,SQL2005/2008,而JDBCDriver一直用
Microsoft SQL Server 2005 JDBC Driver 1.2,支持sql2000/sql2005/sql2008,下載地址:
http://www.microsoft.com/downloads/details.aspx?familyid=C47053EB-3B64-4794-950D-81E1EC91C1BA&displaylang=zh-cn
今天試了下最新的
Microsoft SQL Server JDBC Driver 2.0,據(jù)官方說(shuō)明,支持sql2000/sql2005/sql2008,下載地址:
http://msdn.microsoft.com/zh-cn/library/ms378422.aspx
不過(guò)僅支持JRE6及以上版本。而且文件也成了兩個(gè)sqljdbc.jar 或 sqljdbc4.jar,下載后將兩個(gè)文件放入jre\lib\ext。替換原來(lái)的sqljdbc.jar。結(jié)果運(yùn)行出錯(cuò):
此驅(qū)動(dòng)程序不支持 Java Runtime Environment (JRE) 1.6 版。請(qǐng)使用支持 JDBC 4.0 的 sqljdbc4.jar 類庫(kù)。
重啟Eclipse,還是出錯(cuò)。后來(lái)查下MSDN,看到這么一段:
必須確保 CLASSPATH 語(yǔ)句僅包含一個(gè) Microsoft SQL Server JDBC driver,例如 sqljdbc.jar 或 sqljdbc4.jar。sqljdbc4.jar 類庫(kù)要求使用 6.0 或更高版本的 Java 運(yùn)行時(shí)環(huán)境 (JRE)。
選擇正確的 JAR 文件
Microsoft SQL Server JDBC Driver 2.0 提供兩個(gè)類庫(kù)文件:sqljdbc.jar 和 sqljdbc4.jar,具體使用哪個(gè)文件取決于首選的 Java 運(yùn)行時(shí)環(huán)境 (JRE) 設(shè)置。有關(guān)選擇哪個(gè) JAR 文件的詳細(xì)信息,請(qǐng)參閱 JDBC Driver 的系統(tǒng)要求。
于是:試著刪除sqljdbc.jar,再重啟Eclipse,運(yùn)行成功!
注意:JDBC Driver 1.0以后,JDBC Driver 2.0連接串發(fā)生變化:
1、驅(qū)動(dòng)程序與 SQL SERVER 2000 JDBC DRIVER 之間存在加載沖突
如果您在同一個(gè)進(jìn)程中同時(shí)加載 Microsoft SQL Server 2000 JDBC Driver 和 Microsoft SQL Server JDBC Driver(版本 1.0、1.1、1.2 和 2.0),在某些情況下,2000 版 JDBC 驅(qū)動(dòng)程序?qū)㈠e(cuò)誤地接受 DriverManager.getConnection 方法調(diào)用,而該調(diào)用實(shí)際是針對(duì) Microsoft SQL Server JDBC Driver(版本 1.0、1.1、1.2 和 2.0)的。
產(chǎn)生這一問(wèn)題的原因是:如果首先加載 2000 版 JDBC 驅(qū)動(dòng)程序,則此驅(qū)動(dòng)程序?qū)㈠e(cuò)誤地接受 URL 前綴“jdbc:sqlserver://”。
若要解決此問(wèn)題,請(qǐng)先加載 Microsoft SQL Server JDBC Driver(版本 1.0、1.1、1.2 和 2.0)類,如下所示:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); // 版本 1.0 或更高版本
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); // 2000 版
這將確保 URL 前綴“jdbc:sqlserver://”由 Microsoft SQL Server JDBC Driver(版本 1.0、1.1、1.2 和 2.0)處理,而 URL 前綴“jdbc:microsoft:sqlserver://”由 2000 版 JDBC 驅(qū)動(dòng)程序處理。
2、自1.2版本后支持實(shí)例名的連接
jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]
例:
- String CLASSFORNAME = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
- String CONNECTSTR = "jdbc:sqlserver://ap2\\vegnet:1433;DatabaseName=agronet2008";
- String user = "sa";
- String password = "sa";
- //***
更詳細(xì)的示例,請(qǐng)查看下載后的\sqljdbc_2.0\chs\help\default.htm
【編輯推薦】