JDBC 簡介
JDBC API
JDBC 是 Java 資料庫連線(__J__ava __D__ata__B__ase __C__onnectivity) 的縮寫, 它提供了 Java 訪問各種關係型資料庫的一系列 API, 功能包括:
- 建立資料庫連線
- 建立 SQL 語句
- 執行 SQL 語句
- 檢視或修改結果集
JDBC API 中主要幾個介面:
- DriverManager: 由於 Java 程式可能會操作多個資料庫, 所以我們可能需要來自於不同資料庫的連線. Driver Manager 就是用來管理一個或多個資料庫驅動, 並根據需要返回不同的連線.
- Driver: 用於管理於資料庫的通訊. 由 Driver Manager 內部管理, 一般很少直接適用 Driver 類, 更多的是使用 Driver Manager.
- Connection : 提供了與資料庫互動的所有方法.
- Statement : 提供了與 SQL包 括儲存過程 相關的操作.
- ResultSet: 提供了與 SQL 查詢返回結果集相關的操作
- SQLException: 處理與資料庫操作相關的異常
JDBC 驅動
JDK 中只定義了運算元據庫相關的 API, 這些介面的實現, 也就是對不同資料操作的實現, 並不可能包含在 JDK 中. 這些介面一般都由第三方實現, 被稱為 JDBC 驅動(driver).
JDBC 驅動的實現方式主要有四種:
1) JDBC-ODBC 橋. JDBC 驅動由 ODBC 橋接而來, 在 JAVA 剛出來的時候, 支援 ODBC 的驅動佔絕大多數, 所以讓這些資料庫能支援 Java 的最快方式就是橋接:
2) Native-API 驅動. 對 JDBC API 的呼叫將會被轉化成本地 C/C++ 驅動的呼叫, 這種方式比起第一種方式要快一些, 因為它沒有了對 ODBC 的呼叫. 但是這種也是有侷限的, 由於這些 C/C++ 本地驅動是由資料庫廠商提供, 如果要更換資料庫, 那麼這些這些程式碼也要修改.
Oracle Call Interface (OCI) 就是屬於這種型別, 以下是 JDBC 呼叫 OCI 的一個例子:
String query = "select /*+ result_cache */ * from emp where empno < : 1";
((oracle.jdbc.OracleConnection)conn).setImplicitCachingEnabled(true);
((oracle.jdbc.OracleConnection)conn).setStatementCacheSize(10);
PreparedStatement pstmt;
ResultSet rs;
for (int j = 0 ; j < 10 ; j++ )
{
pstmt = conn.prepareStatement (query);
pstmt.setInt(1,7500);
rs = pstmt.executeQuery();
while (rs.next( ) )
{ // see the values }
rs.close;
pstmt.close( ) ;
}
}
3) 純Java中介軟體驅動. 使用了三層結構, 本地的 JDBC API 呼叫通過網路協議傳送到中介軟體伺服器, 中介軟體伺服器解析後再呼叫實際的JDBC驅動(1,2,4型).如圖:
4) 純Java驅動. 資料庫廠商提供了 Java 驅動, 它比起第一和第二種型別驅動要快, 並且不像第三種驅動那樣依賴網路.
相關文章
- [譯] RxJava JDBC 簡介RxJavaJDBC
- Java學習:JDBC簡介JavaJDBC
- JDBC第一篇【介紹JDBC、使用JDBC連線資料庫、簡單的工具類】JDBC資料庫
- JDBC 詳細介紹JDBC
- Spring Data JDBC介紹SpringJDBC
- JDBC的基礎介紹JDBC
- JDBC專題介紹(3)JDBC
- jdbc就是這麼簡單JDBC
- Oracle 10gR2 JDBC介紹Oracle 10gJDBC
- JDBC介面技術介紹1 (轉)JDBC
- JDBC介面技術介紹2 (轉)JDBC
- java實現簡單的JDBCJavaJDBC
- JDBC入門與簡單使用JDBC
- 深入淺出MyBatis:JDBC和MyBatis介紹MyBatisJDBC
- 簡介
- 軟體測試學習教程——JDBC介紹JDBC
- Jira使用簡介 HP ALM使用簡介
- 這裡介紹了mysql for c的API ODBC JDBCMySqlAPIJDBC
- BookKeeper 介紹(1)--簡介
- Amphenol簡介
- Vagrant簡介
- PySimpleGUI 簡介GUI
- Protobuf簡介
- MyBatis 簡介MyBatis
- jango簡介Go
- cookie 簡介Cookie
- Session 簡介Session
- Cookie簡介Cookie
- Virgilio 簡介
- Django簡介Django
- ElasticSearch簡介Elasticsearch
- Javascript 簡介JavaScript
- Electron簡介
- Dubbo 簡介
- JavaScript簡介JavaScript
- CSS 簡介CSS
- 反射簡介反射
- JanusGraph -- 簡介