歡迎您光臨本站 註冊首頁

JDBC 介面的性能

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

  一:

  l. 連接到資料庫的方法

  答:1) ODBC(Open Database Connectivity)

  一個以C語言為基礎訪問SQL為基礎資料庫引擎的介面,它提供了一致的介面用於和資料庫溝通以及訪問數據.

  2) JDBC

  Java版本的ODBC

  2. JDBC應用編程介面

  答:JDBC應用編程介面是:

  1) 標準的數據訪問介面,可以連到不同的資料庫;

  2) JAVA編程語言的一組類和介面.

  JDBC應用編程介面能夠:

  1) 連接到資料庫;

  2) 發SQL查詢字元串到資料庫;

  3) 處理結果.

  JDBC應用編程介面有二個主要的部分:

  1) JAVA應用程序開發介面面向JAVA應用程序開發者;

  2) JDBC驅動程序開發介面

  3. JDBC Driver

  答:1) 一大堆實現了JDBC類和介面的類;

  2) 提供了一個實現java.sql.Driver介面的類.

  4. JDBC Driver的四種類型

  答:1) JDBC-ODBC橋

  由ODBC驅動提供JDBC訪問

  2) 本地API

  部分Java driver把JDBC調用轉化成本地的客戶端API

  3) JDBC-net

  純的Java driver,將JDBC調用轉入DBMS,與網路協議無關.然後通過伺服器將調用轉為DBMS協議.

  4) 本地協議

  純的java driver,將JDBC調用直接轉為DBMS使用的網路協議

  5. JDBC開發者介面

  答:1) java.sql--java 2平台下JDBC的主要功能,標準版(J2SE)

  2) javax.sql--java 2平台下JDBC增強功能,企業版(J2EE)

  6. 使用URL確認資料庫

  答:我們使用URL來確定一個資料庫(正確的Driver,正確的主機,正確的協議,正確的協議,正確的用戶名和密碼);

  語法:protocol:subprotocol:subname

  範例:jdbc:db2:MyTest

  jdbc:db2://localhost:6789/MyTest

  7. javax.sql包JDBC2.0的增強功能

  答:1) 數據源介面;

  2) 連接池;

  3) 分散式交易;

  4) 行集;

  8. 創建一個基本的JDBC應用

  答:1) 步驟一:註冊一個driver;

  2) 步驟二:建立一個到資料庫的連接;

  3) 步驟三:創建一個statement;

  4) 步驟四:執行SQL語句;

  5) 步驟五:處理結果;

  6) 步驟六:關閉JDBC對象

  9. 註冊一個Driver(步驟一)

  答:1) driver被用於連接到資料庫;

  2) JDBC應用編程介面使用第一個能成功連接到給定URL的driver;

  3) 在同一時間可以裝載多個driver

  10.註冊一個driver的方法:

  答:1) 使用類loader(裝載;實例化;註冊入DriverManager)

  a. Class.forName("Com.ibm.db2.jdbc.app.DB2Driver");

  b. Class.forName("Com.ibm.db2.jdbc.net.DB2Driver");

  c. Class.forName("Com.microsoft.jdbc.sqlServer.SQLServerDriver);

  d. Class.forName("oracl.jdbc.driver.OracleDriver");

  e. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

  2) 實例化一個Driver

  a. Driver drv = new COM.cloudscape.core.RmiJdbcDriver();

  二:

  1. 建立一個到資料庫的連接(步驟二)

  答:DriverManager調用getConnection(urlString)方法,實際上調用的是driver的connect(urlString)方法;

  1) 當一個driver肯定地對應到一個資料庫URL,DriverManager建立一個連接;

  2) 當沒有driver匹配,返回null然後下一個driver被檢驗;

  3) 假如沒有建立連接,拋出一個SQLExcepiton異常

  2. 經常使用的一些JDBC URL

  答:1) JDBC-ODBC: jdbc:odbc:<DB>

  2) Oracle: jdbc:oracle:oci:@<sid> or jdbc:oracle:thin:@<SID>

  3) Weblogic MS-SQL: jdbc:weblogic:mssqlserver4:<DB>@<HOST>:<PORT>

  4) DB2: jdbc:db2:MyTest or jdbc.db2://localhost:6789/MyTest(需要用戶名和密碼)

  3. Driver連接方法

  答:1) 創建一個到指定Driver實例的直接調用;

  2) 避免一般訪問的問題

  Driver drv = new COM.ibm.db2.jdbc.app.DB2Driver();

  Connection con = null;

  try {con = drv.connect("jdbc:db2:MyTest",new Properties())}

  catch(SQLException e){}

  4. 創建一個Statement(步驟三)

  答:1) Statement的三個介面:

  a. Statement;

  b. PreparedStatement(繼承自Statement);

  c. CallableStatement(繼承自PreparedStatement);

  2) 使用方法Connection.createStatement()得到一個Statement對象

  5. PreparedStatement對象

  答:1) 調用ProparedStatement比statement更為高效;

  2) 繼承自Statement;

  3) 語法:PreparedStatement pstm = connection.prepareStatement(sqlString);

  6. CallableStatement對象

  答:1) 通過CallableStatement調用資料庫中的存儲過程;

  2) 繼承自PreparedStatement;

  3) CallableStatement cstm = connection.prepareCall("{call return_student[?,?]}");

  cstm.setString(1,"8623034");

  cstm.registerOutparameter(2, Types.REAL);

  cstm.execute();

  float gpa = cstm.getFloat(2);

  7. Statement介面的比較

  答: | Statement | PreparedStatement | CallableStatement

  ------------------------------------------------------------------------------

  寫代碼位置 | 客戶端 | 客戶端 | 伺服器端

  ------------------------------------------------------------------------------

  寫代碼位置 | 客戶端 | 伺服器端 | 伺服器端

  ------------------------------------------------------------------------------

  編寫代碼技術 |Java,SQL操作 |Java,SQL操作 | 資料庫的程序語言,如PL/SQL

  ------------------------------------------------------------------------------

  可配置性 | 高 |第一次高,以後低 | 低

  ------------------------------------------------------------------------------

  可移植性 | 高 |假設支持PreparedStatement的話高

  ------------------------------------------------------------------------------

  傳輸效率 | 低 |第一次低,以後高 | 高

  8. 執行SQL Statement(步驟四)

  答:通過介面方法將SQL語句傳輸至黙認的資料庫連接,返回結果可能是一個數據表,可以通過java.sql.ResultSet訪問.

  1) Statement的介面方法:

  a. executeQuery(sqlString): 執行給定的SQL聲明,返回一個結果集(ResultSet)對象;

  b. executeUpdate(sqlString): 執行給定的SQL聲明,可以是INSERT、UPDATE或DELETE聲明,也可以是SQL DDL聲明;

  c. execute(sqlString): 執行給定的SQL聲明.

  9. 處理結果(步驟五)

  答:1) 使用結果集(ResultSet)對象的訪問方法獲取數據;

  a. next():下一個記錄

  b. first():第一個記錄

  c. last():最后一個記錄

  d. previous():上一個記錄

  2) 通過欄位名或索引取得數據

  3) 結果集保持了一個指向了當前行的指針,初始化位置為第一個記錄前.

  10. 關閉JDBC對象(步驟六)

  答:一般在finally里定義;

  1) 關閉記錄集;

  2) 其次關閉聲明;

  3) 最后關閉連接對象.

  11. 數據表和類對應的三種關係:

  答:1) 一個表對應一個類;

  2) 一個表對應相關類;

  3) 一個表對應整個類關係層

  12. 類間關係的幾種表設計:

  答:1) 多對一:

  2) 一對一:

  3) 一對多:

  4) 多對多:

  13. SQL數據類型及其相應的Java數據類型

  答:SQL數據類型 Java數據類型 說明

  ------------------------------------------------------------------

  INTEGER或者INT int 通常是個32位整數

  SMALLINT short 通常是個16位整數

  NUMBER(m,n) DECIMAL(m,n) Java.sql.Numeric 合計位數是m的定點十進位數,小數後面有n位數

  DEC(m,n) Java.sql.Numeric 合計位數是m的定點十進位數,小數後面有n位數

  FLOAT(n) double 運算精度為n位二進位數的浮點數

  REAL float 通常是32位浮點數

  DOUBLE double 通常是64位浮點數

  CHARACTER(n)或CHAR(n) String 長度為n的固定長度字元串

  VARCHAR(n) String 最大長度為n的可變長度字元串

  BOOLEAN boolean 布爾值

  DATE Java.sql.Date 根據具體設備而實現的日曆日期

  TIME Java.sql.Time 根據具體設備而實現的時戳

  TIMESTAMP Java.sql.Timestamp 根據具體設備而實現的當日日期和時間

  BLOB Java.sql.Blob 二進位大型對象

  CLOB Java.sql.Clob 字元大型對象

  ARRAY Java.sql.Array

  三:

  1. 元數據

  答:關於數據的信息,例如類型或者容量.通過JDBC API可以訪問:

  1) 資料庫元數據;

  a. 使用connection.getMetadata方法返回DataMetaData引用

  b. 能夠使用isReadOnly此類方法獲取信息

  2) 結果集元數據;

  a. 使用ResultSet.getMetadata方法返回ResultSetMetaData引用

  b. 能夠使用getColumnCount此類方法獲取信息

  2. 事務處理

  答:1) 一系列的動作作為一個不可分的操作;

  2) JDBC API中使用事務處理步驟:

  a. 用false作為參數調用setAutoCommit方法;

  b. 執行一或多個關於資料庫的操作;

  c. 調用commit方法完成改變;

  d. 恢復上次提交后的改變,調用rollback方法.

  try

  {

  con.setAutoCommit(false);

  Statement stm = con.createStatement();

  stm.executeUpdate("insert into student(name, age, gpa) values('gzhu', 30, 4.8)");

  stm.commit();

  }

  catch(SQLException e)

  {

  try

  {

  con.rollback();

  }

  catch(Exception e)

  {

  }

  }

  3. 併發控制

  答:1) 設置隔離級別方法:setTransactionIsolation

  2) 隔離級別靜態變數

  a. TRANSACTION_NONE:只讀的數據字典;

  b. TRANSACTION_READ_UNCOMMITTED:只讀未提交數據;

  c. TRANSACTION_READ_COMMITTED:只讀未提交數據;

  d. TRANSACTION_REPEATABLE_READ:重複讀取數據;

  e. TRANSACTION_SERIALIZABLE:無論做什麼操作都不許別人動.

  3) 示例:con.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);

  4. JDBC 2.0 應用程序編程介面增強功能

  答:1) ResultSet增強:

  a. 可以回卷;

  b. 可以修改;

  設置示例:Statement stm = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

  2) Statement增強了批量修改能力(batch updates);

  3) 更高級的數據類型(例:Struct).

  5. JDBC 2.0標準擴展

  答:1) JNDI(Java Naming and Directory Interface): 解決離散狀態下Object的查找;

  2) 連接池:在內存中保存了一個資料庫連接,不需要註冊驅動器,提高性能的重要方法.


[火星人 ] JDBC 介面的性能已經有785次圍觀

http://coctec.com/docs/java/show-post-60773.html