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

Java 連接 DB2 開發全流程:JDBC 與 CLI 核心步驟詳解

     編輯:DB2 教學

JDBC 開發標準五步驟

DB2 完整支援 JDBC,無需預編譯/綁定,純動態 SQL。核心流程如下:

1. 載入驅動並建立連接

Class.forName("com.ibm.db2.jcc.DB2Driver");  // 建議用 JCC Type 4 驅動
String url = "jdbc:db2://host:port/dbname";
Connection con = DriverManager.getConnection(url, user, password);

2. 創建 Statement 對象

Statement stmt = con.createStatement();
// 或 PreparedStatement pstmt = con.prepareStatement(sql);
// 或 CallableStatement cstmt = con.prepareCall("{call proc(?,?)}");

3. 執行查詢/更新

// 查詢
ResultSet rs = stmt.executeQuery("SELECT * FROM EMPLOYEE");
// 更新/插入/刪除/ DDL
int count = stmt.executeUpdate("UPDATE EMPLOYEE SET SALARY = SALARY * 1.1");

4. 處理結果集與元數據

ResultSetMetaData rsmd = rs.getMetaData();
int colCount = rsmd.getColumnCount();
for (int i = 1; i <= colCount; i++) {
    System.out.print(rsmd.getColumnLabel(i) + "\t");
}
System.out.println();

while (rs.next()) {
    for (int i = 1; i <= colCount; i++) {
        System.out.print(rs.getString(i) + "\t");
    }
    System.out.println();
}

5. 關閉資源(逆序關閉)

if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (con != null) con.close();

常用 Statement 設置選項

方法說明
setMaxRows(int)限制結果集最大行數
setQueryTimeout(int)語句執行超時秒數
setEscapeProcessing(boolean)是否啟用 JDBC 轉義語法處理
setFetchSize(int)提示驅動每次抓取行數(影響網絡往返)
setFetchDirection(int)結果集游標方向(FORWARD/REVERSE/UNKNOWN)

呼叫層接口 (CLI) 簡介

CLI 是 DB2 提供的 C/C++ 級動態 SQL 接口,通過函數調用嵌入宿主語言,非新查詢語言。核心特點:

  • 運行時動態準備/執行 SQL,無需預編譯綁定。
  • 提供 SQLExecDirect、SQLPrepare/SQLExecute、SQLBindParameter、SQLFetch 等核心函數。
  • 適用於高性能、底層控制、非 Java 環境(C/C++、COBOL、.NET CLI 互操作)。

Java 開發首選 JDBC;若需極致性能或混語言環境,可考慮 CLI/ODBC。

最佳實踐提醒

  • 生產環境務必使用連接池(HikariCP、DBCP、Tomcat Pool 等),避免頻繁建連開銷。
  • 優先用 PreparedStatement 防注入、利用計劃緩存。
  • 大結果集分頁用 OFFSET ... FETCH NEXT ... 或游標。
  • 事務邊界清晰:con.setAutoCommit(false),業務完成 commit(),異常 rollback()。
  • 驅動版本與 DB2 服務端版本保持兼容,建議統一用最新 JCC (db2jcc4.jar)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved