Linux下通過JDBC連接Oracle,SqlServer和PostgreSQL


今天正好需要統計三個網站欄目信息更新情況,而這三個網站的后台采用了不同的數據庫管理系統。初步想法是通過建立一個小的Tomcat webapp,進而通過JDBC訪問這三個后台數據庫,並根據返回的數據生成報表。

1 開發環境

 

  • 數據庫管理系統:一個是SqlServer 2000,另一個是Oracle 9i,再一個是PostgreSQL9.1
  • Tomcat執行平台:CentOSx64 + JDK7.0x64 (全64位環境)

2 JDBC驅動的選擇

2.1 Oracle9i

Oracle官方提供了ojdbc6.jar這個type 4 JDBC驅動,僅此一個文件就能完成對JDBC的支持,將其拷貝到WEB-INF/lib下。關鍵代碼如下:
 
         Class.forName("oracle.jdbc.driver.OracleDriver");
         DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
         String dbUrl = "jdbc:oracle:thin:@IP地址:1521:實例名";

 
oracle對於兼容性做的非常好,這個版本的JDBC驅動對oracle9i依然支持良好。
 

2.2 SqlServer2000

微軟官方也提供了SqlServer的type 4 JDBC驅動,具體說來有兩個文件:sqljdbc4.jar, sqljdbc.jar,其中帶4的是最新的版本可以運行於JDK7.0下,而不帶4的版本不能運行於
JDK7下,問題是sqljdbc4.jar只支持SqlServer 2005以上的版本,不支持SqlServer 2000。也就是說要想通過微軟提供的JDBC驅動操作SqlServer 2000,你的JDK版本一定要比JDK7低才行,可是我們的開發環境已經確定了是JDK7。
有此想到了兩個解決思路:
 
一是使用JDBC-ODBC橋接,unixODBC是Linux平台上的ODBC實現,進而還需要安裝SqlServer 2000的ODBC驅動,www.unixODBC.org給出了兩個鏈接,一個不是免費開源的;另一個是基於freetds的ODBC驅動,不知為什么www.freetds.org網站打不開了。我以前用過freetds的命令行連接SqlServer還是不錯的。ODBC的配置非常復雜,尤其是在Linux 環境下,特別不友好。懶惰的心理下,放棄了這種思路。
 
二是既然freetds可以操作SqlServer,為什么不越過ODBC,讓JDBC直接基於tds呢,很幸運在網上找到了一個好的解決方案:jTDS,詳見http://jtds.sourceforge.net。這個項目提供了基於TDS協議的JDBC實現,是一個純的type 4 JDBC驅動,通過一個jtds-1.3.0.jar即可滿足通過JDBC訪問SqlServer2000的需要。而且可以運行於JDK7.0下,正好滿足我的要求。
 
最終采取了第二種思路,關鍵代碼如下:
 
              Class.forName("net.sourceforge.jtds.jdbc.Driver");
              DriverManager.registerDriver(new net.sourceforge.jtds.jdbc.Driver());
              String dbUrl = "jdbc:jtds:sqlserver://IP地址:1433/數據庫名";

2.3 PostgreSQL9.1

官網jdbc.potgresql.org提供postgresql-9.2-1000.jdbc4.jar,這也是一個type 4 JDBC驅動,下載即可使用。關鍵代碼如下:

           Class.forName("org.postgresql.Driver");
           dbUrl = "jdbc:postgresql://IP地址:5432/數據庫名";

這個驅動加載的時候自動注冊,所以不需要再單獨進行registerDriver了。

3 總結

通過這個小小的項目,總結一下目前常用的數據庫的JDBC驅動選擇:
(1)SQL Server 對於2005及以上版本,建議使用微軟官方的type 4JDBC驅動;對於2000版本,如果JDK環境較老,可以使用微軟官方版本,如果JDK7.0則使用jTDS這個type 4JDBC驅動;
(2)Oracle,對於所有版本推薦使用官方的thin驅動,也就是type4的JDBC驅動;
(3)PostgreSQL, MySql,官方提供了type 4的JDBC驅動,使用即可。
網絡是個寶藏,但是要找到你真正需要的東西,就必須有完整的知識體系結構,必須有清晰的分析思路。
 
如果需要在.net框架下訪問Sqlserver和Oracle,可以參考我的另一篇博客: http://blog.csdn.net/smstong/article/details/5874451


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM