JDBC 常用方法

1. 連接到數據庫的方法
答: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對象(步驟六)
答: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) 連接池:在內存中保存了一個數據庫連接,不需要註冊驅動器,提高性能的重要方法。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章