0734w-月下竹音

          0734是來自家鄉(xiāng)的聲音

          常用鏈接

          統(tǒng)計

          最新評論

          轉(zhuǎn):使用 JDBC 連接不同版本 DB2 數(shù)據(jù)庫的兼容性問題

          本文通過實驗介紹了 JDBC 應用在不同版本 DB2 系統(tǒng)之間遷移的問題,探討彼此的兼容性,并就存在的問題給出了解決辦法。

          簡介

          關(guān)系數(shù)據(jù)庫在您的電子商務應用中一定扮演著不可或缺的重要角色。DB2 是您的選擇么?也許您的系統(tǒng)里早就部署了 DB2 UDB V7.2 系列軟件;也許您正打算升級您的 DB2 系統(tǒng)到最新的版本;也許您剛剛部署了最新的 DB2 UDB V8.1 系列軟件,并且想更新您之前開發(fā)的應用系統(tǒng)。如果您正打算這么做,那么這篇文章的話題應該是您所感興趣的。

          您的應用系統(tǒng)如果想和 DB2 系統(tǒng)打交道,我想首先需要做的一定是和 DB2 數(shù)據(jù)庫建立連接并且對數(shù)據(jù)庫進行各種操作。對于基于 JAVA 平臺的應用程序來說,JDBC(Java Database Connectivity) 一定是開發(fā)人員的首選。它作為 JAVA 編程語言的必備組件,已經(jīng)成為 JAVA 2 標準版(JAVA 2,Standard Edition,J2SE)規(guī)范的一部分,而 DB2 系統(tǒng)對 JDBC 做了很好的支持。

          在您決定遷移您的應用系統(tǒng)的時候,可能并不想直接升級您的DB2系統(tǒng)到最新的版本,這個時候就可能會碰到和我開發(fā)中所碰到的相似的情形,即我們需要適應不同版本的 DB2 數(shù)據(jù)庫同時存在的應用環(huán)境,這時我們可能希望應用程序能夠順利地在不同版本的 DB2 數(shù)據(jù)庫之間遷移而無需做過多的修改。

          本文就介紹了為解決這類問題所做的一系列實驗,并且根據(jù)實驗結(jié)果給開發(fā)人員提出了一些建議。

          我們討論的范圍限定在使用 JDBC 連接 DB2 UDB V7.2 和 DB2 UDB V8.1 時碰到的問題。這里實驗環(huán)境中的 JDK 版本是 1.3,可能有些開發(fā)人員已經(jīng)嘗試采用 JDK1.4 了,如果開發(fā)中碰到一些令人費解的問題,請嘗試改變您的 JDK 版本再做嘗試,這往往就能解決你的問題。

          通過本文,讀者可以了解到下面的一些知識:

          1. DB2 系統(tǒng)對 JDBC (Java Database Connectivity)的支持

          2. DB2 命令行工具 CLP(Command Line Processor)

          3. DB2 命令中心(DB2 Command Center)

          4. 不同版本 DB2 系統(tǒng)發(fā)布的 JDBC 驅(qū)動程序彼此的兼容性

          我在實驗中使用的軟件系統(tǒng)包括:

          1. IBM DB2 UDB V7.2 Enterprise Edition

          2. IBM DB2 UDB V7.2 Enterprise Edition FixPack 7

          3. IBM DB2 UDB V8.1 Enterprise Server Edition

          4. IBM DB2 UDB V8.1 Enterprise Server Edition FixPack 4

          5. IBM WSAD V5.0

          6. Windows 2000 Server





          回頁首


          DB2 與 JDBC 支持

          依照 JDBC 規(guī)范,有四種類型的 JDBC 驅(qū)動程序體系結(jié)構(gòu):

          • Type 1:這類驅(qū)動程序?qū)? JDBC API 作為到另一個數(shù)據(jù)訪問 API 的映射來實現(xiàn),如開放式數(shù)據(jù)庫連通性(Open Database Connectivity,ODBC)。這類驅(qū)動程序通常依賴本機庫,這限制了其可移植性。JDBC-ODBC 橋驅(qū)動程序就是 Type 1 驅(qū)動程序的最常見的例子。
          • Type 2:這類驅(qū)動程序部分用 JAVA 編程語言編寫,部分用本機代碼編寫。這些驅(qū)動程序使用特定于所連接數(shù)據(jù)源的本機客戶端庫。同樣,由于使用本機代碼,所以其可移植性受到限制。
          • Type 3:這類驅(qū)動程序使用純 JAVA 客戶機,并使用獨立于數(shù)據(jù)庫的協(xié)議與中間件服務器通信,然后中間件服務器將客戶機請求傳給數(shù)據(jù)源。
          • Type 4:這類驅(qū)動程序是純 JAVA,實現(xiàn)針對特定數(shù)據(jù)源的網(wǎng)絡協(xié)議。客戶機直接連接至數(shù)據(jù)源。

          對于DB2 UDB V7.2來說,它不支持 Type 1 和 Type 4 的驅(qū)動程序,但是提供了分別支持 Type 2 和 Type 3 的驅(qū)動程序。

          示例如下:

          兩種驅(qū)動程序均隨產(chǎn)品安裝由 db2java.zip 提供。

          • COM.ibm.db2.jdbc.app.DB2Driver

          這是一種 Type 2 的 JDBC 驅(qū)動程序,它通過 DB2 本地客戶機庫的幫助建立和 DB2本地數(shù)據(jù)庫或是遠程數(shù)據(jù)庫的連接(事先將遠程數(shù)據(jù)庫編目到本地)。因此,我們必須在應用系統(tǒng)所在的機器上同時部署 DB2 本地客戶機庫,這也許是它最大的一個不足之處。

          使用格式如下:

          Driver Name:COM.ibm.db2.jdbc.app.DB2Driver

          URL Pattern:jdbc:db2:databasename

          databasename: 需要訪問的數(shù)據(jù)庫名

          • COM.ibm.db2.jdbc.net.DB2Driver

          這是一種 Type 3 的 JDBC 驅(qū)動程序,它通過與一臺已經(jīng)部署了 DB2 本地客戶機庫的機器通信來建立和 DB2 遠程數(shù)據(jù)庫的連接。

          使用格式如下:

          Driver Name:COM.ibm.db2.jdbc.net.DB2Driver

          URL Pattern:jdbc:db2:ServerIP:databasename

          ServerIP: 需要訪問的數(shù)據(jù)庫所在機器IP地址

          databasename: 需要訪問的數(shù)據(jù)庫名

          (目標DB2系統(tǒng)偵聽該服務于默認端口6789,否則還需要在 URL Pattern 中指定目標端口號)

          對于 DB2 UDB V8.1 來說,它仍然不支持 Type 1 的驅(qū)動程序。同時,它在 DB2 UDB V8.1的基礎(chǔ)上,新增加了對 Type 4 驅(qū)動程序的支持。

          示例如下:

          DB2 UDB V8.1 仍然支持上面所述 V7.2 支持的兩種驅(qū)動程序,隨產(chǎn)品安裝由 db2java.zip 提供,但具體實現(xiàn)上和 DB2 UDB V7.2 產(chǎn)品發(fā)布的包有所不同,所以可能存在下文所要進行實驗驗證的兼容性問題。

          除了 COM.ibm.db2.jdbc.app.DB2Driver 之外,DB2 UDB V8.1 還提供了另外一種 Type 2 的驅(qū)動程序,隨產(chǎn)品安裝由 db2jcc.jar 提供。其實現(xiàn)包名是 com.ibm.db2.jcc.DB2Driver,在DB2 UDB V8.1 最初的實現(xiàn)中,此驅(qū)動程序只用于使用 Type 4 驅(qū)動程序體系結(jié)構(gòu)與 DB2 服務器進行直接的 JAVA 連接,這類驅(qū)動程序由于不需要另外部署 DB2 本地客戶機庫以及性能相對較好而收到開發(fā)人員的歡迎。自從 DB2 UDB V8.1.2(安裝了 FixPack 2)之后,開發(fā)人員還可以在 Type 2 體系結(jié)構(gòu)中使用該驅(qū)動程序,以提高本地應用程序的性能。

          這里,兩種驅(qū)動程序具有相同的實現(xiàn)類名稱,有兩種不同的方法可以區(qū)分 DB2 系統(tǒng)在內(nèi)部最終會實例化哪個驅(qū)動程序:

          • 使用不同的 URL Pattern 來區(qū)分兩種不同的驅(qū)動程序

          Type 2 Driver URL Pattern:jdbc:db2:databasename

          這當中 databasename 是需要訪問的數(shù)據(jù)庫名

          Type 4 Driver URL Pattern:jdbc:db2://ServerIP:50000/databasename

          這當中 ServerIP 是需要訪問的數(shù)據(jù)庫所在機器IP地址,databasename 是需要訪問的數(shù)據(jù)庫名,DB2 服務器會在默認端口 50000 上進行偵聽。

          • 使用連接特性來區(qū)分數(shù)據(jù)庫連接是否會使用 DB2 本地客戶機庫,或者是使用JAVA 直接連接。

          DB2 UDB V8.1 新增加支持的這種 Type 4 驅(qū)動程序,常被稱為“通用 JDBC 驅(qū)動程序”,是一種與驅(qū)動程序類型連通性或目標平臺無關(guān)的抽象 JDBC 處理器,因此常用于進行分布式和本地 DB2 UDB 訪問。因為“通用 JDBC 驅(qū)動程序”獨立于任何特定 JDBC 驅(qū)動程序類型連通性或目標平臺,所以它在一個 DB2 UDB 驅(qū)動程序?qū)嵗型瑫r支持所有 JAVA 連通性(Type 4 驅(qū)動程序)和基于 JNI 的連通性(Type 2 驅(qū)動程序)。該驅(qū)動程序可以用于獨立 JAVA 應用程序或多層應用程序,是開發(fā)人員一個不錯的選擇。





          回頁首


          兼容性實驗

          上文前后介紹了很多種 DB2 系統(tǒng)支持的 JDBC 驅(qū)動程序,想必您的應用中已經(jīng)采用了其中的某一種或幾種,而在遷移您的應用時您一定希望最好不要更改原有的程序。這個要求能辦到么?如果您的應用中所采用的驅(qū)動程序?qū)Σ煌姹镜? DB2 系統(tǒng)進行連接的兼容性足夠好,這個要求就一定能辦到。那讓我們帶著這個疑問,來進行下面這個兼容性實驗吧。

          實驗環(huán)境:

          為了完成這個實驗,我部署了兩臺機器,就分別命名為 Machine A 和 Machine B 吧。

          Machine A 上部署了 DB2 UDB V7.2.7(安裝了 FixPack 7),它可能和您應用環(huán)境中的舊版本 DB2 系統(tǒng)很類似;Machine B 上我部署了 DB2 UDB V8.1.4(安裝了 FixPack 4,這是目前公開發(fā)布的最新的補丁),這也許和您升級后的最新 DB2 系統(tǒng)相仿。

          相應的,在兩臺機器上,我都安裝了 DB2 命令行工具(CLP),DB2 控制中心(Control Center),DB2 命令中心(Command Center)等工具以便能夠?qū)? DB2 系統(tǒng)進行配置和監(jiān)控。

          實驗中當需要編寫代碼的時候,我采用的工具是 WSAD V5.0(WebSphere Studio Application Developer),這是個不錯的開發(fā)工具。

          實驗目的:

          我們帶著上文碰到的這個問題來做這個實驗。因此,我們分別采用上文中提及的各種 JDBC驅(qū)動程序嘗試建立與 DB2 本地數(shù)據(jù)庫和遠程數(shù)據(jù)庫的連接。如果一切順利,這還只是完成了實驗第一步。假設建立數(shù)據(jù)庫連接成功,我們會緊接著嘗試對這個數(shù)據(jù)庫進行各種操作,先是測試查詢操作,這是最常見的數(shù)據(jù)庫操作;然后會是插入,更新,刪除等 DML 操作,它們會改變數(shù)據(jù)庫中存儲的數(shù)據(jù)。如果這些都沒有問題的話,我們還需要繼續(xù)嘗試諸如新建,修改,刪除數(shù)據(jù)表等 DDL 操作。

          為了增強實驗的比較效果和準確性,我們除了會編寫代碼來進行各種測試,還會使用 DB2 命令行工具(CLP)和 DB2 命令中心(圖形化管理工具)來進行相同的操作,并且就運行結(jié)果進行比較。

          明確了實驗目的,下面就來開始我們的實驗吧。

          實驗過程:

          A:實驗的第一步是測試 DB2 UDB 不同版本隨產(chǎn)品發(fā)布的 JDBC 驅(qū)動程序?qū)υ摪姹咀陨淼募嫒菪浴?

          這里我先編寫代碼完成了各項測試目的,一切順利。

          然后,我使用 DB2 命令行工具(CLP)來重復這些測試。

          可以通過在命令行中鍵入 db2cmd 進入 DB2 CLP,然后在提示符下鍵入 db2,就會進入DB2 CLP 的交互界面。

          如下圖:

          這個命令行工具可以完成圖形化工具所做的所有管理配置工作,并且可以節(jié)省很多內(nèi)存資源。

          實驗中,我們首先需要用命令連接到一個數(shù)據(jù)庫:

          示例如下,在命令行提示符后鍵入

          CONNECT TO SAMPLEDBUSER db2adminUSING password

          該命令表示使用用戶名為 db2admin,密碼為 password,連接至數(shù)據(jù)庫 SAMPLEDB,緊接著會返回連接后的數(shù)據(jù)庫相關(guān)信息。然后就可以在命令行提示符后直接鍵入各種 DDL 或 DML 語句來執(zhí)行各種操作。

          最后,我們還可以使用 DB2 UDB 隨產(chǎn)品發(fā)布的一個圖形化管理工具――命令中心(Command Center)來驗證我們的實驗。

          可以參照上圖啟動命令中心,其相關(guān)操作請參見產(chǎn)品文檔。

          B:這一步我們將測試 DB2 UDB 兩個版本中隨產(chǎn)品發(fā)布的 Type 2 JDBC 驅(qū)動程序連接與其本身不同版本的 DB2 UDB 系統(tǒng)時的兼容性。

          在進行這步測試時,由于 Type 2 JDBC 驅(qū)動程序是針對本地數(shù)據(jù)庫開發(fā)的,因此我們需要先將遠程數(shù)據(jù)庫編目(catalog)到本地,再嘗試連接。下面先給出了采用 DB2 命令行工具編目遠程數(shù)據(jù)庫的例子。

          遠程數(shù)據(jù)庫的相關(guān)信息示例如下:

          目標數(shù)據(jù)庫所在機器名:TESTSERVER

          目標數(shù)據(jù)庫所在機器 IP 地址:10.1.1.15

          目標數(shù)據(jù)庫所屬實例名:TESTINSTANCE

          目標數(shù)據(jù)庫名:SAMPLEDB

          目標數(shù)據(jù)庫所在機器操作系統(tǒng)類型:WINDOWS

          1. 啟動 DB2 命令行工具
          2. 在命令行提示符下鍵入命令:
            CATALOG TCPIP NODE TESTSERVERREMOTE 10.1.1.15 SERVER 50000REMOTE_INSTANCE TESTINSTANCEOSTYPE WINDOWS
            此命令將 TESTSERVER 這臺機器以及其中指定的數(shù)據(jù)庫實例編目到本地
          3. 在命令行提示符下鍵入命令:
            CATALOG DATABASE SAMPLEDBAT NODE TESTSERVER
            此命令將樣本數(shù)據(jù)庫 SAMPLEDB 編目到本地
          4. 在命令行提示符下鍵入命令:
            COMMIT 此命令將上面基本的修改提交給 DB2 系統(tǒng)使之生效。
          5. 在命令行提示符下鍵入命令:LIST DB DIRECTORY

          通過這個命令你可以查看所有本地的數(shù)據(jù)庫以及編目到本地的遠程數(shù)據(jù)庫的信息,以驗證編目是否成功。

          編目遠程數(shù)據(jù)庫之后,我們就可以將其看作是本地數(shù)據(jù)庫對其進行各種操作。(如果想進一步了解這些命令的更多內(nèi)容,可以參考 DB2 聯(lián)機幫助)

          這部分的測試結(jié)果比較有趣,在實驗結(jié)果中會詳細描述。

          C:完成了上一步之后,我們已經(jīng)有了不少收獲。在這一步中,我們測試了 DB2 UDB 兩個版本中隨產(chǎn)品發(fā)布的 Type 3 JDBC 驅(qū)動程序連接與其本身不同版本的 DB2 UDB 系統(tǒng)時的兼容性。

          在這步當中,我們直接采用 COM.ibm.db2.jdbc.net.DB2Driver 這種網(wǎng)絡 JDBC 驅(qū)動程序來嘗試連接遠程數(shù)據(jù)庫,均以失敗告終。這無論是編寫代碼測試,還是 DB2 命令行工具,或者是 DB2 命令中心,都是令人沮喪的結(jié)果,因而這種方式不推薦大家使用。

          D:最后這步也許是大家所最關(guān)心的,就是 DB2 UDB V8.1 新增支持的 Type 4 JDBC 驅(qū)動程序連接 DB2 UDB V7.2 時的兼容性(同時也支持Type 2 體系結(jié)構(gòu)訪問)。

          這里我們將 DB2 UDB V7.2 作為遠程數(shù)據(jù)庫,采用 Type 4 JDBC 驅(qū)動程序直接進行連接,同樣以失敗告終。我們轉(zhuǎn)而先將其編目到本地,采用該驅(qū)動程序的 Type 2 方式進行訪問,其現(xiàn)象與用隨 DB2 UDB V8.1 產(chǎn)品發(fā)布的 COM.ibm.db2.jdbc.app.DB2Driver 進行測試的結(jié)果類似。

          這似乎讓我們對這種新增支持的 JDBC 驅(qū)動程序失去了信心,不過不要著急。下文中會給出一種解決方法,能夠使得這種驅(qū)動程序順利的實現(xiàn)對 DB2 UDB V7.2 數(shù)據(jù)庫的連接和各種操作。

          附件中給出了測試代碼的框架,請有興趣的讀者自行更改各種 JDBC 驅(qū)動程序的包名和 URL 模式以完成各種實驗組合。

          實驗結(jié)果:

          A:對于這一類實驗,我們對實驗結(jié)果還是很有信心的,最后的實驗結(jié)果也驗證了我們事先的預想。

          對于DB2 UDB V7.2

          ? DB2 UDB V7.2本地數(shù)據(jù)庫 DB2 UDB V7.2遠程數(shù)據(jù)庫
          COM.ibm.db2.jdbc.app.DB2Driver 成功 成功
          COM.ibm.db2.jdbc.net.DB2Driver 成功 成功

          對于DB2 UDB V8.1

          ? DB2 UDB V8.1 本地數(shù)據(jù)庫 DB2 UDB V8.1 遠程數(shù)據(jù)庫
          COM.ibm.db2.jdbc.app.DB2Driver 成功 成功
          COM.ibm.db2.jdbc.app.DB2Driver 成功 成功
          com.ibm.db2.jcc.DB2Driver(Type 2) 成功 成功
          com.ibm.db2.jcc.DB2Driver(Type 4) 成功 成功

          這步測試中,編寫代碼,DB2 命令行工具,DB2 命令中心測試結(jié)果一致。看來隨產(chǎn)品發(fā)布的 JDBC 驅(qū)動程序?qū)Ρ井a(chǎn)品的支持相當不錯。

          B:這類實驗的結(jié)果差別還是比較大的,也比較有趣。

          ? DB2 UDB V7.2 遠程數(shù)據(jù)庫

          (編目成本地數(shù)據(jù)庫)

          DB2 UDB V8.1 遠程數(shù)據(jù)庫

          (編目成本地數(shù)據(jù)庫)

          COM.ibm.db2.jdbc.app.DB2Driver(隨 DB2 UDB V7.2 產(chǎn)品發(fā)布) 無意義 成功
          COM.ibm.db2.jdbc.app.DB2Driver(隨 DB2 UDB V8.1 產(chǎn)品發(fā)布) 連接成功,其它操作失敗(CLP 除外) 無意義

          這步實驗需要分兩種情況來分析:

          1. 本地端是 DB2 UDB V7.2 系統(tǒng),遠端是 DB2 UDB V8.1 系統(tǒng),被編目至本地。

          • 先用 DB2 命令行工具建立連接,進行各項數(shù)據(jù)庫操作,都沒有問題。
          • 再用 DB2 命令中心重復上面操作,也沒有問題。最后編寫代碼重復上面操作,同樣一切正常。

          這個結(jié)果讓我們非常滿意。

          2. 本地端是 DB2 UDB V8.1 系統(tǒng),遠端是 DB2 UDB V7.2 系統(tǒng),被編目至本地。

          • 先用 DB2 命令行工具建立連接,進行各項數(shù)據(jù)庫操作,一切正常。
          • 再用 DB2 命令中心重復上面操作,數(shù)據(jù)庫連接正常,但繼續(xù)做數(shù)據(jù)庫操作時,會報錯:SQL0805N 找不到程序包 "NULLID.SYSSH200"。 SQLSTATE=51002,無法繼續(xù)。
          • 最后,編寫代碼進行測試,數(shù)據(jù)庫連接一切正常,能夠獲得 Connection 對象引用,但是一旦進行各種數(shù)據(jù)庫操作,會報和上面同樣的錯誤。

          這個錯誤將和下面實驗 D 碰到的錯誤類似,下文會給出統(tǒng)一的解決方案。

          C:這類實驗之前我們猜測成功的可能性不大,最后的結(jié)果也驗證了我們的猜測。

          ? DB2 UDB V7.2 遠程數(shù)據(jù)庫(未編目成本地數(shù)據(jù)庫) DB2 UDB V8.1 遠程數(shù)據(jù)庫(未編目成本地數(shù)據(jù)庫)
          COM.ibm.db2.jdbc.net.DB2Driver(DB2 UDB V7.2產(chǎn)品發(fā)布) 與A重復 連接失敗
          COM.ibm.db2.jdbc.net.DB2Driver(DB2 UDB V8.1產(chǎn)品發(fā)布) 連接失敗 與A重復

          經(jīng)過這步測試,可以認為直接用 COM.ibm.db2.jdbc.net.DB2Driver 連接不同版本的遠程數(shù)據(jù)庫是不合適的。

          D:開發(fā)人員一定對 DB2 UDB V8.1 新增支持的這兩種 JDBC 驅(qū)動程序期望值很高,因此這步實驗的結(jié)果大家會比較關(guān)心。

          ? DB2 UDB V7.2 遠程數(shù)據(jù)庫(編目成本地數(shù)據(jù)庫) DB2 UDB V7.2 遠程數(shù)據(jù)庫(未編目成本地數(shù)據(jù)庫)
          com.ibm.db2.jcc.DB2Driver(Type 2) 連接成功,其它操作失敗(CLP 除外) 無意義
          com.ibm.db2.jcc.DB2Driver(Type 4) 無意義 連接失敗

          通過這步實驗,這種最新支持的 JDBC 驅(qū)動程序在兼容低版本上與原有驅(qū)動類似。看到這個結(jié)果我們有點失望。

          其實,這個問題的關(guān)鍵在于一些標準 JCC JDBC 程序包沒有和目標數(shù)據(jù)庫進行綁定,可以手工通過執(zhí)行下面命令來完成這項工作。

          示例如下:

          db2jdbcbind -url jdbc:db2://ServerIP:50000/SAMPLEDB -user db2admin -password password

          使用該命令實現(xiàn)綁定相關(guān)程序包之后,我又重復了部分 實驗 B 和實驗 D,實驗結(jié)果如下:

          ? DB2 UDB V7.2 遠程數(shù)據(jù)庫(編目成本地數(shù)據(jù)庫) DB2 UDB V8.1 遠程數(shù)據(jù)庫(編目成本地數(shù)據(jù)庫)
          COM.ibm.db2.jdbc.app.DB2Driver(DB2 UDB V8.1產(chǎn)品發(fā)布) 成功 成功

          ? DB2 UDB V7.2 遠程數(shù)據(jù)庫(編目成本地數(shù)據(jù)庫) DB2 UDB V7.2 遠程數(shù)據(jù)庫(未編目成本地數(shù)據(jù)庫)
          com.ibm.db2.jcc.DB2Driver(Type 2) 成功 無意義
          com.ibm.db2.jcc.DB2Driver(Type 4) 無意義 成功

          這同時解決了實驗 B 和實驗 D 中都碰到的問題,讓我們松了一口氣。

          實驗結(jié)論:

          通過上面的實驗,我們就可以得出這樣一些建議。它適用于當您需要在不同版本的DB2系統(tǒng)之間遷移您的數(shù)據(jù)庫應用的時候。

          • 我們可以基于舊版本的 DB2 系統(tǒng)(如 DB2 UDB V7.2),然后將目標系統(tǒng)(如 DB2 UDB V8.1)編目至本地,使用 COM.ibm.db2.jdbc.app.DB2Driver 進行數(shù)據(jù)庫連接和操作。
          • 我們也可以基于新版本的 DB2 系統(tǒng)(如 DB2 UDB V8.1),然后將目標系統(tǒng)(如 DB2 UDB V7.2)編目至本地,先手工將相關(guān)程序包綁定至目標數(shù)據(jù)庫系統(tǒng),再使用 COM.ibm.db2.jdbc.app.DB2Driver 或是 com.ibm.db2.jcc.DB2Driver 進行數(shù)據(jù)庫連接和操作。

          實驗的結(jié)果讓我們較為滿意,我們有了不只一種選擇來遷移我們的應用。

          注:由于時間和環(huán)境的限制,實驗不可能覆蓋所有的 JDBC 特性,而只限于較為常見的數(shù)據(jù)庫操作。因此,可能在一些特殊情形下上面的實驗結(jié)果并不成立,歡迎作進一步的討論和補充。





          回頁首


          小結(jié)

          本 文的作者在開發(fā)中碰到了 JDBC 數(shù)據(jù)庫應用在不同版本 DB2 系統(tǒng)之間遷移的問題。帶著這個問題,他進行了一系列實驗,測試了 DB2 UDB V7.2 與 DB2 UDB V8.1 中 JDBC 驅(qū)動程序彼此的兼容性,并就存在的問題給出了解決辦法。最后給有類似困惑的開發(fā)人員提出了一些建議。





          回頁首


          參考資料

          1.? DB2 命令行處理器(CLP)常用命令參考

          http://www.ibm.com/developerworks/cn/dmdd/library/techarticles/0211yip2/index.shtml#1

          2.? ?DB2 UDB for Linux, Unix 和 Windows 中的 JAVA 開發(fā)概述

          http://www.ibm.com/developerworks/cn/dmdd/library/techarticles/0307zikopoulos/0307zikopoulos.shtml

          3.? DB2 在線開發(fā)指南

          http://www-306.ibm.com/software/data/db2/udb/ad/v7/adg/db2a0/frame3.htm

          4.? DB2 產(chǎn)品官方主頁

          http://www-306.ibm.com/software/data/db2/udb/

          5.DB2 開發(fā)者園地

          http://www.ibm.com/developerworks/cn/dmdd/

          posted on 2006-04-03 11:07 sparkwu 閱讀(269) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 分宜县| 永泰县| 叶城县| 高青县| 灌南县| 台东县| 荥经县| 邓州市| 沛县| 武川县| 行唐县| 合川市| 津南区| 濉溪县| 建始县| 静宁县| 卓资县| 芮城县| 永泰县| 峡江县| 双牌县| 安仁县| 会理县| 湖口县| 东明县| 五大连池市| 焦作市| 密云县| 聂拉木县| 若尔盖县| 玉山县| 张掖市| 沂源县| 崇信县| 平舆县| 云龙县| 江阴市| 遂川县| 封开县| 屏山县| 静宁县|