一、 填空題
- JDBC ,是一種用於執行SQL語句的Java API,為多種關系數據庫提供統一訪問。它由一組用Java語言編寫的類和接口組成。
- JDBC API:供程序員調用的接口與類,集成在java.sql和 javax.sql包中。
- 簡單地說,JDBC 可做三件事: 與數據庫建立連接 、發送操作數據庫的語句、處理結果。
- 加載JDBC驅動是通過調用方法 java.lang.Class.forName() 實現的。
- JDBC中與數據庫建立連接是通過調用 DriverManager類的靜態方法
getConnection(url,user,password) 實現的。
- 有三種 Statement對象:Statement、 preparedStatemen 、CallableStatement(從PreparedStatement 繼承)。
- ResultSet 對象是executeQuery()方法的返回值,它被稱為結果集,它代表符合SQL語句條件的所有行,並且它通過一套getXXX方法(這些get方法可以訪問當前行中的不同列)提供了對這些行中數據的訪問。
- ResultSet對象自動維護指向當前數據行的游標。每調用一次 next() 方法,游標向下移動一行。
- 在JDBC中,事務操作成功后,系統將自動調用 commit() 提交,否則調用rollback()回滾。
- 在JDBC中,事務操作方法都位於接口java.sql.Connection中。可以通過調用
setAutoCommit(false) 來禁止自動提交。
- JDBC中,事務開始的邊界不是那么明顯,它會開始於組成當前事務的所有 statement 中的第一個被執行的時候。
二、 選擇題
1. |
以下選項中有關Connection描述錯誤的是( D )(選擇一項) |
|
|
|
|
|
A. |
Connection是Java程序與數據庫建立的連接對象,這個對象只能用來連接 數據庫,不能執行SQL語句。 |
|
B. |
JDBC的數據庫事務控制要靠Connection對象完成。 |
|
C. |
Connection對象使用完畢后要及時關閉,否則會對數據庫造成負擔。 |
|
D. |
只用MySQL和Oracle數據庫的JDBC程序需要創建Connection對象,其他 數據庫的JDBC程序不用創建Connection對象就可以執行CRUD操作 |
2. |
使用Connection 的哪個方法可以建立一個PreparedStatement接口?( B )(選擇一項) |
|
|
|
|
|
A. |
createPrepareStatement() |
|
B. |
prepareStatement() |
|
C. |
createPreparedStatement() |
|
D. |
preparedStatement() |
3. |
下面的描述錯誤的是( B )(選擇一項) |
|
|
|
|
|
A. |
Statement的executeQuery()方法會返回一個結果集 |
|
B. |
Statement的executeUpdate()方法會返回是否更新成功的boolean值 |
|
C. |
Statement的execute ()方法會返回boolean值 ,含義是是否返回結果集 |
|
D. |
Statement的executeUpdate()方法會返回值是int類型,含義是DML操作影響記錄數 |
4. |
下列選項有關ResultSet說法錯誤的是( AD )(選擇二項) |
|
|
|
|
|
A. |
ResultSet是查詢結果集對象,如果JDBC執行查詢語句沒有查詢到數據,那 么ResultSet將會是null值 |
|
B. |
判斷ResultSet是否存在查詢結果集,可以調用它的next()方法 |
|
C. |
如果Connection對象關閉,那么ResultSet也無法使用 |
|
D. |
ResultSet有一個記錄指針,指針所指的數據行叫做當前數據行,初始狀態下記錄指針指向第一條記錄。 |
5. |
在JDBC編程中執行完下列SQL語句 SELECT name, rank, serialNo FROM employee, 能得到rs的第一列數據的代碼是( BC )(選擇二項) |
|
|
|
|
|
A. |
rs.getString(0); |
|
B. |
rs.getString("name"); |
|
C. |
rs.getString(1); |
|
D. |
rs.getString("ename"); |
6. |
SELECT COUNT(*) FROM emp;這條SQL語句執行,如果員工表中沒有任何數據, 那么ResultSet中將會是( B )(選擇一項) |
|
|
|
|
|
A. |
null |
|
B. |
有數據 |
|
C. |
不為null,但是沒有數據 |
|
D. |
以上都選項都不對 |
7. |
以下選項關於PreparedStatement的說法錯誤的是( C )(選擇一項) |
|
|
|
|
|
A. |
PreparedStatement繼承了Statement ,可以執行預編譯的SQL語句 |
|
B. |
PreparedStatement可以有效的防止SQL注入 |
|
C. |
PreparedStatement只能執行帶問號占位符的預編譯SQL,不能執行SQL語句 |
|
D. |
PreparedStatement可以存儲預編譯的SQL語句,從而提升執行效率 |
8. |
如果為下列預編譯SQL的第三個問號賦值,那么正確的選項是( B )(選擇一項) UPDATE emp SET ename=?,job=?,salary=? WHERE empno=? |
|
|
|
|
|
A. |
pst.setInt("3",2000); |
|
B. |
pst.setInt(3,2000); |
|
C. |
pst.setFloat("salary",2000); |
|
D. |
pst.setString("salary","2000"); |
三、 判斷題
- JDBC對Java程序員而言是接口模型,對實現與數據庫連接的服務提供商而言是API。( F )
- JDBC訪問數據庫步驟:1:加載一個Driver驅動;2:創建數據庫連接Connection。3:創建SQL命令發送器Statement。4:通過Statement發送SQL命令並得到結果。5:處理結果。6:關閉數據庫資源。( T )
- ResultSet里的數據一行一行排列,每行有多個字段,且有一個記錄指針,指針所指的數據行叫做當前數據行,我們只能來操作當前的數據行。我們如果想要取得某一條記錄,可以使用ResultSet的next()方法 ,如果我們想要得到ResultSet里的所有記錄,就應該使用while循環。( T )
- ResultSet對象自動維護指向當前數據行的游標。每調用一次next()方法,游標向下移動一行。 循環完畢后指回第一條記錄。( F )
- 作為一種好的編程風格,應在不需要Statement對象和Connection對象時顯式地關閉它們。( T )
- 用戶不必關閉ResultSet。當它的 Statement 關閉、重新執行或用於從多結果序列中獲取下一個結果時,該ResultSet將被自動關閉。( T )
- 要按先ResultSet結果集,后Statement,最后Connection的順序關閉資源,因為Statement和ResultSet是需要連接是才可以使用的,所以在使用結束之后有可能其他的Statement還需要連接,所以不能先關閉Connection。( T )
- 在JDBC中,事務操作缺省是需要手動提交的。( F )
四、 簡答題
- 有哪些不同類型的JDBC驅動?
A JDBC-ODBC Bridge plus ODBC Driver(類型1):它使用ODBC驅動連接數據庫。需要安裝ODBC以便連接數據庫,正因為這樣,這種方式現在已經基本淘汰了。
B Native API partly Java technology-enabled driver(類型2):這種驅動把JDBC調用適配成數據庫的本地接口的調用。
C Pure Java Driver for Database Middleware(類型3):這個驅動把JDBC調用轉發給中間件服務器,由它去和不同的數據庫進行連接。用這種類型的驅動需要部署中間件服務器。這種方式增加了額外的網絡調用,導致性能變差,因此很少使用。
D Direct-to-Database Pure Java Driver(類型4):這個驅動把JDBC轉化成數據庫使用的網絡協議。這種方案最簡單,也適合通過網絡連接數據庫。不過使用這種方式的話,需要根據不同數據庫選用特定的驅動程序,比如OJDBC是Oracle開發的Oracle數據庫的驅動,而MySQL Connector/J是MySQL數據庫的驅動。
- JDBC的操作步驟主要有哪些?
1:加載一個Driver驅動;
2:創建數據庫連接Connection。
3:創建SQL命令發送器Statement。
4:通過Statement發送SQL命令並得到結果。
5:處理結果。
6:關閉數據庫資源。
- execute,executeQuery,executeUpdate的區別是什么?
- JDBC的ResultSet是什么?
- 相對於Statement,PreparedStatement的優點是什么?
- JDBC的事務管理是什么,為什么需要它?