首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JDBC 核心類與方法速查手冊:四類驅動、七大核心接口、關鍵方法全景圖

     編輯:Java 相關知識

前言:工欲善其事,必先利其器

JDBC API 雖不大,但類與方法眾多。本文系統梳理四類驅動架構與七大核心接口/類的關鍵方法,構建速查手冊,適合開發時快速查閱、面試複習、教學大綱編寫。

一、JDBC 四類驅動架構演進

類型名稱架構流向特點適用場景
Type 1 JDBC-ODBC Bridge App → JDBC-ODBC Bridge → ODBC Library → ODBC Driver → DB 需客戶端裝 ODBC 驅動;JDK 內置 sun.jdbc.odbc;JDK 8 移除 快速原型、無 JDBC 驅動的庫
Type 2 JDBC-Native API Bridge App → JDBC Driver → Native DB Library → DB 需客戶端裝 DB 客戶端庫;性能優於 Type 1 早期 Oracle OCI 驅動等
Type 3 JDBC-Middleware (Net Protocol) App → JDBC Driver → Java Middleware Server → JDBC Driver → DB 客戶端零安裝;中間件統一轉換;靈活性最高;通常最小 三層架構、防火牆環境、非 DB 廠商提供
Type 4 Pure Java Driver (Thin Driver) App → JDBC Driver → DB Engine → DB 純 Java,零安裝,直通 DB 引擎協議;最高性能;支援 Internet 部署 現代生產環境主流選擇

二、七大核心接口/類與關鍵方法

1. DriverManager —— 驅動管理與連接工廠

  • Class.forName(String driver):加載註冊驅動
  • static Connection getConnection(url, user, pwd):獲取連接
  • static Driver getDriver(url):查找能打開指定 URL 的驅動

2. Connection —— 數據庫會話上下文

  • Statement createStatement() / createStatement(resultSetType, resultSetConcurrency)
  • PreparedStatement prepareStatement(sql)
  • DatabaseMetaData getMetaData()
  • boolean getAutoCommit() / void setAutoCommit(boolean)
  • void commit() / void rollback()
  • void close() / boolean isClosed()

ResultSet 類型與併發性常量:

  • Type:TYPE_FORWARD_ONLY、TYPE_SCROLL_INSENSITIVE、TYPE_SCROLL_SENSITIVE
  • Concurrency:CONCUR_READ_ONLY、CONCUR_UPDATABLE

3. Statement —— 靜態 SQL 執行器

  • ResultSet executeQuery(sql):SELECT
  • int executeUpdate(sql):INSERT/DELETE/UPDATE
  • void close()

4. PreparedStatement —— 參數化預編譯 SQL(Statement 子接口)

  • ResultSet executeQuery() / int executeUpdate()
  • ResultSetMetaData getMetaData()
  • 參數綁定系列(index 從 1 起):
    • setInt(index, x)、setFloat(index, x)、setString(index, x)
    • setDate(index, x)、setTime(index, x)、setTimestamp(index, x)
    • setNull(index, sqlType)、setBoolean(index, x)、setBigDecimal(index, x)
    • setBytes(index, x)、setBlob(index, x)、setClob(index, x)
  • void addBatch() / int[] executeBatch():批量執行
  • void clearParameters()

5. DatabaseMetaData —— 數據庫特性百科

  • String getDatabaseProductName() / getDatabaseProductVersion()
  • String getDriverName() / getDriverVersion()
  • String getURL() / String getUserName()
  • ResultSet getTables(catalog, schema, tableNamePattern, types[])
  • ResultSet getColumns(catalog, schema, table, columnPattern)
  • ResultSet getPrimaryKeys(catalog, schema, table)
  • ResultSet getImportedKeys/ExportedKeys/CrossReference(...)

6. ResultSet —— 結果集游標與數據訪問

  • 游標導航:
    • boolean next()、boolean previous()
    • boolean first()、boolean last()
    • boolean absolute(row)、void beforeFirst()、void afterLast()
    • boolean relative(rows)
  • 數據獲取(按列索引 1-based 或列名):
    • getInt()、getLong()、getString()、getDate()、getTimestamp()、getBigDecimal()、getBoolean()、getBytes()、getBlob()、getClob()、getObject()
  • 可更新結果集(需 CONCUR_UPDATABLE):
    • void updateXxx(column, value)
    • void insertRow()、void updateRow()、void deleteRow()
    • void moveToInsertRow()、void moveToCurrentRow()
  • ResultSetMetaData getMetaData() / void close()

7. ResultSetMetaData —— 結果集結構描述

  • int getColumnCount()
  • String getColumnName(index) / getColumnLabel(index)
  • int getColumnType(index) / String getColumnTypeName(index)
  • int getPrecision(index) / int getScale(index)
  • String getTableName(index)
  • boolean isNullable(index) / boolean isCaseSensitive(index) / boolean isReadOnly(index) / boolean isAutoIncrement(index)

三、版本演進關鍵點

  • JDBC 1.0:基礎接口、僅前向游標
  • JDBC 2.0:可滾動游標、可更新結果集、PreparedStatement 批量、DataSource/JNDI、連接池標準
  • JDBC 3.0:Savepoint、參數元數據、BOOLEAN 類型、自動生成鍵獲取
  • JDBC 4.0/4.1/4.2/4.3:自動加載驅動(SPI)、RowId、National Character 類型、try-with-resources 支援、LargeUpdateCount、Sharding 支援

四、最佳實踐速記

  1. 驅動選 Type 4 純 Java
  2. 連接用 DataSource + 連接池(HikariCP 首選)
  3. SQL 用 PreparedStatement + 參數綁定
  4. 資源用 try-with-resources 自動關閉
  5. 批量用 addBatch/executeBatch
  6. 事務手動控制邊界,finally 恢復 autoCommit
  7. 元數據編程用 DatabaseMetaData/ResultSetMetaData

總結

JDBC 核心 API 小而精。掌握四類驅動架構演進邏輯與七大接口關鍵方法,即持有 Java 數據訪問的「速查地圖」。實戰中配合 IDE 自動補全、連接池監控、SQL 執行計劃分析,方能寫出高性能、健壯、可維護的數據訪問代碼。

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