Java Database Connectivity
Trang 1Java Database
Connectivity
thangld@uit.edu.vn Khoa Mạng máy tính và Truyền thông
Đại học Công nghệ Thông tin
Trang 3Java Database Connectivity 3
Giới thiệu
được sử dụng để truy cập các CSDL quan hệ trong các ứng dụng Java
Trang 4 Có nhiều loại trình điều khiển khác nhau tương ứng với các loại CSDL khác nhau
JDBC Java
Trang 5Java Database Connectivity 5
JDBC Drivers
Trang 6CSDL
Trang 7Java Database Connectivity 7
Driver Type I
trên máy tính client
Trang 8Driver Type II
trên máy tính client
sẵn
Trang 9Java Database Connectivity 9
Driver Type III
CSDL chỉ với một driver
Trang 10Driver Type IV
tiếp trực tiếp với HQT CSDL
tương ứng với các loại CSDL khác nhau
Trang 11Java Database Connectivity 11
Qui trình thực hiện
Thiết lập kết nối với CSDL
Tạo lập và thực thi câu truy vấn
Nhận và xử lý dữ liệu trả về
Đóng kết nối với CSDL và giải phóng tài nguyên
Trang 13Java Database Connectivity 13
Mỗi driver có một subprotocol riêng
Mỗi subprotocol có một cú pháp khai báo source riêng
Trang 14JDDB Drivers & URLs
Trang 15Java Database Connectivity 15
JDDB Drivers & URLs
Trang 16Thiết lập kết nối CSDL
String url = "jdbc:odbc:Northwind";
try {
Class.forName("oracle.jdbc.driver.OracleDriver"); Connection connection =
Trang 17Java Database Connectivity 17
Đối tượng Statement
Trang 18Đối tượng Statement
ResultSet executeQuery(String)
Thực thi một câu truy vấn SQL Trả về một ResultSet
int executeUpdate(String)
Thực thi một câu lệnh DML: INSERT, UPDATE,
DELETE hoặc câu lệnh DDL Trả về số mẫu tin được cập nhật
boolean execute(String)
Thực thi một câu lệnh thao tác CSDL nói chung
Trang 19Java Database Connectivity 19
Đối tượng ResultSet
Statement tại một thời điểm
(dòng dữ liệu) đang được truy xuất
next(): dịch chuyển con trỏ mẫu tin sang mẫu tin kế tiếp
previous(): ngược với next()
absolute(int row): di chuyển con trỏ mẫu tin đến một dòng cụ thể cho trước
Trang 20Đối tượng ResultSet
boolean next()
Di chuyển sang mẫu tin kế tiếp
Trả về giá trị false nếu đã ở cuối ResultSet
void close()
Giải phóng đối tượng ResultSet
Cho phép tái sử dụng đối tượng Statement
Trang 21Java Database Connectivity 21
Truy xuất dữ liệu trong ResultSet
Trang 22Ví dụ: SELECT
Connection con = DriverManager.getConnection(
url, “admin”, “password”);
Statement st = con.createStatement();
ResultSet results = st.executeQuery(
“SELECT EmployeeID, LastName, FirstName FROM Employees”);
while (results.next()) {
int id = results.getInt(1);
String last = results.getString(2);
String first = results.getString(3);
System.out.println(" " + id + ": "
+ first + " " + last);
}
st.close();
Trang 23Java Database Connectivity 23
Các loại Statement khác
PreparedStatement prepareStatement(String sql)
Khởi tạo một đối tượng PreparedStatement, sử dụng
để thực thi các câu truy vấn nhận tham số đã được
biên dịch sẵn
CallableStatement prepareCall(String sql)
Khởi tạo một đối tượng CallableStatement, sử dụng
để gọi thực thi các Stored Procedure / Function
Có thể đăng ký tham số ra trong lời gọi SP / F
Lấy giá trị của tham số ra trong lời gọi SP / F
Trang 24Ví dụ: PreparedStatement
PreparedStatement pstmt = con.prepareStatement(
“INSERT INTO Student VALUES (?, ?)”);
while ((student = buf.readStudent()) != null){
pstmt.setString(1, student.id);
pstmt.setString(2, student.password);
pstmt.executeUpdate();
}
Trang 25Java Database Connectivity 25
Trang 26lệnh đơn lẻ; hoặc tất cả cùng hoàn thành hoăc không có câu lệnh nào được thực thi
Trang 27Q&A