首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

DB2 UDB 8.2 強化 Java 支援:Universal JDBC Driver、Eclipse 開發與 JDBC 3.0 新特性

     編輯:DB2 教學

概覽:DB2 UDB 8.2 Java 生態系

Linux、UNIX、Windows 平台上的 DB2 UDB 8.2 支援多種 Java 程式類型,含客戶端應用、應用伺服器與 DB2 伺服器端的預存程序或使用者定義函數。IBM 引入 DB2 Universal JDBC Driver 支援 JDBC 與 SQLJ(Java 內嵌 SQL)程式設計。v8.2 版驅動完整支援分散式交易、JDBC 3.0 API、驅動專屬服務性與效能增強。新 JDBC 特性含增強結果集處理(可保持游標支援)與儲存點。Java 應用監控大幅簡化,得益於新 SQL 函數可取得 DB2 伺服器效能資訊。本文示範啟用新 JDBC 驅動、在 Java 應用中取得 DB2 伺服器資訊、在 Eclipse 中建構 DB2 Java 應用。

Universal JDBC Driver:Type 4 與 Type 2 連線模式

最新 Java 程式規範由 J2EE 1.4 定義,要求透過遵循 JDBC 3.0 的驅動存取 RDBMS。DB2 Universal JDBC Driver 支援 Type 4 與 Type 2 連線模式:

  • Type 4:純 Java 驅動,可隨應用程式部署,無須共享庫,適合透過 TCP/IP 遠端存取資料庫
  • Type 2:需共享庫,驅動與伺服器間通訊由非 Java 元件處理,適合同一邏輯作業系統中的 DB2 伺服器(IPC)或 Java 預存程序(無法用 TCP/IP 存取 DB2)

建立 Java 連線

使用 DB2 Universal JDBC Driver 連線 DB2 UDB 伺服器,需確保伺服器支援 TCP/IP 連線:

  1. db2set DB2COMM=TCPIP
  2. db2 update dbm cfg using SVCENAME <tcp/ip service name>

安裝期間應正確設定;若初始連線有問題,優先檢查這兩項。SVCENAME 應對應伺服器機器服務檔中定義的連接埠。

JDBC 由 J2SE 規範定義為 DB2 動態 SQL 介面。Java 內建類別與介面,但無 DB2 JDBC 驅動,應用需載入理解與 DB2 互動的類別:

Class.forName("com.ibm.db2.jcc.DB2Driver")

成功載入驅動後,使用 DriverManager.getConnection 連線,URL 嵌入 Java 屬性配置,或使用可配置的 JDBC 2 資料源實例。範例連線 URL:jdbc:db2://localhost:50000/sample(主機 localhost、連接埠 50000、資料庫 SAMPLE)。

清單 1 展示建立連線、查詢 GHUTCHIS.STAFF 表、以欄位名或位置檢索結果。JDBC 驅動包含於 db2jcc.jar;授權檔視目標平台而定(Windows 用 db2jcc_license_cu.jar,z/OS 用 db2jcc_license_cisuz.jar)。

亦可使用 Properties 物件分離連線細節與原始碼,簡化新環境部署(清單 2)。

使用 Eclipse 進行開發

Eclipse 為易用的開源整合開發環境(IDE),成許多 IBM 軟體產品基礎。本文示範使用 Eclipse 2.1 建構簡單 DB2 UDB 8.2 JDBC 應用:

  1. 建立新 Java 專案
  2. 將 DB2 Universal JDBC Driver 加入專案環境(圖 1)
  3. 在 Eclipse Workbench 執行範例程式(圖 2),輸出顯示銷售代表薪資高於經理、略低於總經理
  4. Eclipse 內容敏感說明系統為 Java 開發提供上下文相關協助(圖 3)

JDBC 驅動進階特性

  • currentSchema 屬性:為無限定 DB2 物件提供結構描述限定詞(圖 4)
  • clientApplicationInformation 屬性:協助識別來自 DB2 伺服器的 Java 應用模組(圖 4)

DB2 UDB 8.2 提供新 SQL 管理函數取得伺服器效能資訊。清單 3 展示收集 SQL 查詢在伺服器執行時間:使用 snapshot_appl_info 與 snapshot_appl 表函數,透過 clientApplicationInformation 識別應用模組(如 "Payroll Module"),取得 elapsed_exec_time_ms(範例 77 毫秒)。

清單 4 修改程式同時取得應用端耗時與伺服器端執行時間,範例輸出:應用端 30ms、伺服器端 22ms。新 SQL 函數讓開發人員清楚掌握網路傳輸與查詢執行各自佔比。注意:執行快照 SQL 函數需具備實例上的 SYSCTRL 或更高權限。

錯誤處理:DB2 Universal JDBC Driver 提供基本 SQL 例外資訊與 DB2 伺服器錯誤細節。修改應用列印 DB2Diagnosable 物件細節,透過設定不存在的 currentSchema 引入 SQL 錯誤,圖 5 展示 DB2 SQLCA 資料結構與無效物件引用訊息。

JDBC 3.0 核心新特性

可更新結果集

JDBC 1.0 僅支援 CONCUR_READ_ONLY;JDBC 2.0 引入 CONCUR_UPDATABLE,允許用 Java 碼而非 SQL 更新結果集。透過 ResultSet.updateXX() 方法(依欄位名或索引)便利更新,呼叫 updateRow() 持久化變更。清單 5 示範更新申請人表中間名初始。早期 DB2 JDBC 驅動需顯式游標更新,新用法更直觀。

交易儲存點

儲存點讓開發者將更新成組套用至資料庫,突破早期 all-or-nothing 限制。儲存點為應用程式標記,可依邏輯回滾至該點。須將 Connection 自動提交模式設為 OFF(setAutoCommit(false))。清單 6 示範:關閉自動提交 → 執行兩次更新 → 定義 SavePoint1 → 再執行兩次更新 → rollback(savePoint) 回滾至前兩次更新後狀態 → commit()。回滾可結合布林邏輯設計複雜業務交易。

游標保持能力

JDBC 3.0 前,提交交易時交易期間建立的 ResultSet 游標自動關閉。JDBC 3.0 可撤銷此效果:將 ResultSet.HOLD_CURSORS_OVER_COMMIT 常數提供給 createStatement 或 prepareStatement。可對結果集記錄執行一組更新、提交變更釋放伺服器鎖定,讓其他應用看見修改資料,同時繼續處理 ResultSet。

更多內容

DB2 Universal JDBC Driver 為 DB2 家族戰略組成。本文僅略述 v8.2 部分 JDBC 增強。完整程式碼範例與文件見《Application Development Guide: Programming Client Applications》。新基於 Eclipse 技術的 DB2 UDB 8.2 Information Center 提供優異搜尋功能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved