Câu 1: JDBC URL có chứa thành phần nào sau đây (chọn 2 đáp án)
A. tên user khi login
B. password khi login
C. role khi login
D. tên protocol của jdbc
E. tên database
F. Số port
Câu 2: Từ JDBC bản 4.0 về sau trong file JAR có chứa file nào sau đây (chọn 1 đáp án)
A. META-INF/java.sql.Driver
B. META-INF/databese/java.sqlDriver
C. META-INF/jdbc/java.sql.Driver
D. META-INF/driver/java.sql.Driver
E. META-INF/services/java.sql.Driver
Câu 3: Giả sử bảng department có 3 record. Compile và chạy chương tình sau kết quả là (chọn 1 đáp án)
1 2 3 4 5 |
9. Connection con = new Connection(url, user, pass); 10. Statement stmt = con.createStatement(); 11. String sql = "SELECT count(*) FROM department"; 12. ResultSet rs = stmt.executeQuery(sql); 13. if (rs.next()) System.out.println(rs.getInt(1)); |
A. 0
B. 3
C. Dòng thứ 9 compile error
D. Dòng thứ 13 compile error
E. runtime error
Câu 4: Code nào sau đây có thể điền vào chỗ trống (chọn 3 đáp án)
1 |
Statement stmt = con.createStatement(「①」); |
A. ResultSet.TYPE_FORWARD_ONLY
B. ResultSet.TYPE_REVERSE_ONLY
C. ResultSet.TYPE_SCROLL_INSENSITIVE
D. ResultSet.TYPE_SCROLL_SENSITIVE
E. ResultSet.CONCUR_READ_ONLY
F. ResultSet.CONCUR_UPDATABLE
Câu 5: Chọn đáp án đúng cho code ở chỗ trống sau (chọn 1 đáp án)
1 2 3 |
boolean result1 = stmt.「①」(sql1); int result2 = stmt.「②」(sql2); ResultSet result3 = stmt.「③」(sql3); |
A. ①executeUpdate ②execute ③executeQuery
B. ①executeUpdate ②executeQuery ③execute
C. ①execute ②executeQuery ③executeUpdate
D. ①execute ②executeUpdate ③executeQuery
E. ①executeQuery ②executeQuery ③execute
F. ①executeQuery ②execute ③executeQuery
Câu 6: Giả sử method getConnect() của class DbConnector hoạt động bình thường và trong bảng department có 5 record lưu dept_code từ 1 đến 5. Chạy chương trình sau kết quả là (chọn 1 đáp án)
1 2 3 4 5 6 7 8 9 10 |
import java.sql.*; public class Test{ public static void main(String[] args){ String sql = "UPDATE department set " + "dept_address='Tokyo' where dept_code = 5"; try(Connection con = DbConnector.getConnect(); Statement stmt = con.createStatement()){ int col = stmt.executeUpdate(sql); } } } |
A. biến col có giá trị là 5
B. biến col có giá trị là 1
C. biến col có giá trị là 0
D. runtime error
E. compile error
Câu 7: Giả sử method getConnect() của class DbConnector chạy đúng. Bảng department có 10 record và ko có record nào có dept_code là 13. Chạy chương trình sau kết quả là (chọn 1 đáp án)
1 2 3 4 5 6 7 8 9 10 |
5. String sql1 = "SELECT count(*) FROM department"; 6. String sql2 = "INSERT INTO department " + 7. "VALUES (13, '1', 'b', 'c')"; 8. try (Connection con = DbConnector.getConnect(); 9. Statement stmt = con.createStatement()){ 10. ResultSet rs = stmt.executeQuery(sql1); 11. int num = stmt.executeUpdate(sql2); 12. System.out.print(num + " "); 13. if(rs.next()) System.out.println(rs.getString(1)); 14. } catch(SQLException e){ e.printStackTrace();} |
A. 1 10
B. 1 11
C. Dòng 11 compile error
D. Dòng 13 compile error
E. runtime error
Câu 8:Method để lấy thời gian ngày giờ của ResultSet là (chọn 1 đáp án)
A. getDate
B. getLocalDate
C. getTime
D. getLocalTime
E. getTimestamp
F. getLocalDateTime
Câu 9: method nào của interface ResultSet khong trả về giá trị boolean (chọn 2 đáp án)
A. absolute
B. first
C. last
D. beforeFirst
E. afterLast
F. relative
Câu 10: Giả sử method getConnect() của class DbConnector chạy đúng. Bảng department có 5 record với dept_code là 1->5. Chạy chương trình sau kết quả là (chọn 1 đáp án)
1 2 3 4 5 6 7 8 9 |
String sql = "SELECT dept_code FROM department " + "where dept_code = 5 "; try(Connection con = DbConnector.getConnect(); Statement stmt = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); 11. ResultSet rs = stmt.executeQuery(sql)){ 12. System.out.println(rs.getString(1)); } catch(SQLException e){e.printStackTrace();} |
A. 1
B. 5
C. Dòng 11 compile error
D. Dòng 12 compile error
E. Dòng 11 runtime error
F. Dòng 12 runtime error
- Trong url của jdbc khi kết nối cần có tên protocol (ex: msyql) và tên databasse
- Từ JDBC 4.0 trở đi việc load JDBC driver sẽ dc lược bỏ. Vì thế trong Jar file của các driver JDBC phải có META-INF/servicess/java.sql.Driver để tự load
- connection của jdbc là singleton ko tạo instance mới dc
- đối số đầu tiên của createStatement: ResultSet.TYPE_FORWARD_ONY, TYPE_SCROLL_INSENSITIVE, TYPE_SCROLL_SENSITIVE,
- stmt.execute: Nếu kết quả là object result thì là true, số dòng update hoặc ko có j thì là false
- smt.executeUpdate: Trả về int số dòng update
- smt.executeQuery: Trả về object Result
- SQLException là bắt buộc
- Nếu dùng statement cho 1 query khác thì kết quả của query trước đó sẽ bị close
- BeforeFirst và afterLast là để chuyển vị trí con trỏ -> return void
- ResultSet lấy ngày giờ bằng getTimestamp
- Khi tạo statement (con.createStatement()) mà ko có tham số thì mặc định result trả về sẽ ở dạng TYPE_FORWARD_ONLY
- absolute là method di chuyển result set đến vị trí của param. Relative là method di chuyển về phía trước nếu param là số dương và về phía sau nếu param là số âm
- JDBC gồm 2 thành phần JDBC API có sẵn trong JDK còn JDBC driver thì tùy theo loại database mà phải cài thêm.
- Tham số CONCUR_READ_ONLY cung cấp các method để update database thông qua resultSet trả về
1 2 3 4 5 6 7 8 9 10 11 12 13 |
rs.absolute(2); rs.updateString("name", "Lê"); rs.updateRow() //cần phải gọi method này để update thực sự rs.cancelRowUpdate() //cancel các update của row hiện tại rs.moveToInsertRow(); rs.updateInt(1,4); rs.updateString(2, "Freddy"); rs.insertRow() CSDL: ID NAME 1 John 2 Bill 3 Eric |
- SQLException có getErrorCode và getSQLState method
Đáp án:
- D E
- E
- C
- A C D
- D
- E
- E
- E
- D E
- F