JDBC Recipes(一Introduction)
What Is JDBC ?
JDBC 是java編程中一系列允許簡單連接到很多數據庫(特別是關系型數據庫)編程APIs . In Java 2 Platform, Standard Edition (J2SE) 5.0,
JDBC API 由兩個包定義:
java.sql :提供java訪問處理貯存在數據源(特別是關系型數據庫)中的數據,有最基礎常用的對象如Connection, ResultSet, Statement, and PreparedStatement。這個包j2se 和j2ee平臺都可使用。
javax.sql:提供java訪問處理服務器端數據源。這個包給j2ee提供服務,如DataSource 和RowSet。
ODBC bridge是以ODBC標準 C API 方式實現JDBC 的庫。
簡而言之,JDBC是一個和database-independent 的訪問數據庫的API。
DriverManager是唯一可以創建數據庫連接的類。DriverManager根據各個廠商(如Oracle, MySQL, and Sybase)提供的驅動創建數據庫。
What Is ODBC ?
Open Database Connectivity (ODBC) 是一種來自微軟的編程接口,他為Windows應用程序訪問網絡上數據庫提供了通用語言。 ODBC is a C-based interface
to SQL-based database systems. It provides a consistent interface for communicating with a database and for accessing database metadata (information about the database system vendor and how the tables, views, and data are stored).ODBC作為標準出現。廠商為各自的DBMS提供了各種的驅動或bridges。從java客戶端訪問ODBC-based數據庫,可以使用JDBC-ODBC bridge,因此可以使用JDBC-ODBC bridge訪問支持ODBC的數據庫,比如Microsoft Access。微軟為他的操作系統提供ODBC driver manager。ODBC driver manager協調訪問ODBC驅動和對應的數據源。
問題:如果用c++寫數據庫客戶端,你不得不在另一平臺重新寫客戶端;PC版的不能在Macintosh上運行。兩個原因:1.c++不是跨平臺的,很多東西沒有特別指定(如int型用多少位表示)2 更重要的是,想網絡訪問,GUI框架庫等在各個平臺不同。ODBC的另一個問題是,接口復雜學習時間長。JDBC去除了這些問題,為訪問關系數據庫引入平臺無關的解決方案。因為性能問題和缺少事務支持, JDBC-ODBC bridge 驅動只適合實驗用或沒有其他可選方法。
What Is a JDBC-ODBC Bridge?
簡而言之,JDBC-ODBC bridge通過大多數ODBC驅動來提供JDBC訪問。它是一個把JDBC操作轉換為ODBC操作的JDBC驅動。(ODBC操作是由 C-based libraries實現的——ODBC功能仍然在二進制代碼庫中;如果數據庫或硬件平臺更換,需要替換ODBC庫)。brige作為sun.jdbc.odbc包實現,包含一個native library用來訪問ODBC。sun.jdbc.odbc包在/jre/lib/rt.jar中,包含一個sun.jdbc.odbc.JdbcOdbcDriver類,用來JDBC驅動。注意,JDBC-ODBC bridge是一種“萬能”的方式,因此可能比一些特別設計的JDBC驅動慢。
SQL is a Data Manipulation Language (DML—影響數據庫對象內容的命令集) and a Data Definition Language (DDL—影響數據庫對象結構的命令集).SQL also 提供控制事務命令 (such as commit and rollback)
連接jdbc的過程參考JDBC加載分析 。總之JDBC驅動的作用是提供各種數據庫的具體實現(實現了java.sql.Driver接口),隱藏具體數據庫的細節(每個數據庫廠商可能會為同一個數據庫提供不止一個驅動,這些效率,價格/性能會有不同)。
在fianlly中立刻關閉/釋放 JDBC資源(such as the ResultSet, Statement, PreparedStatement, and Connection objects),而不是等他們自己關閉,會改進應用程序的性能。寫一個工具類釋放這些資源是一個好辦法。
JDBC API主要用來傳SQL statement給數據庫,但也能讀寫表格式數據源的數據,這種來自javax.sql.RowSet組接口的讀寫能力可以被定制去使用更新spreadsheet,flat file 類似表格式數據源的數據。
JDBC有四種類型的驅動連接數據庫。
異常:SQLException:有getNextException()可以鏈接一系列異常,還有很多方法可以展示額外的錯誤/異常信息。SQLWarning:SQLException的子類,表示非致命可忽略BatchUpdateException:批量更新時出現的錯誤,除了SQLException提供的信息,還有錯誤發生前已成功執行多少條數據DataTruncation:意外truancate 數據拋出。
posted on 2010-04-30 13:54 yuxh 閱讀(320) 評論(0) 編輯 收藏 所屬分類: j2ee 、JDBC