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> 或 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的話高
-------------------------------------------------- ----------------------------
傳輸效率 | 低 |第一次低,以後高 | 高