LẬP TRÌNH JAVA
Chương 7
TRUY CẬP CƠ SỞ
DỮ LIỆU VỚI JDBC
GV: Đoàn Thanh Sơn
Nội dung
Giới thiệu về JDBC
JDBC Drivers
Thiết lập kết nối Database
Tạo câu lệnh truy vấn
Thực thi câu truy vấn và xử lý kết quả
Ví dụ
Transaction
2/25
1. Giới thiệu về JDBC
Viết tắt của Java Database Connectivity
JDBC API là thư viện chứa các lớp và giao diện hỗ trợ lập trình viên
Java kết nối và truy cập đến các hệ cơ sở dữ liệu.
Các chức năng
• Thiết lập kết nối đến Database
• Tạo các câu lệnh truy vấn SQL
• Thực thi các câu lệnh truy vấn
• Xem và sửa đổi các kết quả truy vấn
3/25
Cấu trúc của JDBC
kiến trúc của JDBC gồm 2 tầng:
• tầng 1 là JDBC API: chuyển các câu lệnh
SQL cho bộ quản lý trình điều khiển
JDBC
• tầng 2 là các JDBC Driver thực hiện
nhiệm vụ liên hệ với trình điều khiển của
hệ quản trị cơ sở dữ liệu cụ thể.
4/25
2. JDBC Driver
Trình điều khiển JDBC là đoạn chương trình, do
chính nhà xây dựng hệ quản trị CSDL hoặc do nhà
cung ứng thứ ba cung cấp.
Có khả năng yêu cầu hệ quản trị CSDL cụ thể thực
hiện các câu lệnh SQL.
Danh sách các trình điều khiển JDBC cho các hệ
quản trị CSDL khác nhau được Sun cung cấp và cập
nhật liên tục tại địa chỉ:
/>
JDBC Driver
Có 4 loại JDBC Driver
• Loại 1: JDBC/ODBC
• Loại 2: Native-API
• Loại 3: Open Protocol-Net
• Loại 4: Proprietary-Protocol-Net
Loại 1: JDBC/ODBC
jdk hỗ trợ cầu nối jdbc-odbc.
sử dụng phổ biến trong những ngày đầu Java xuất
hiện.
Trình điều khiển loại này luôn được cung cấp kèm
trong bộ J2SE với tên:
sun.jdbc.odbc.JdbcOdbcDriver
Loại 2: Native API Driver
Chuyển các lời gọi của JDBC API sang thư viện hàm (API)
tương ứng với từng hệ CSDL cụ thể.
Do nhà xây dựng hệ CSDL cung cấp.
Để có thề thi hành chương trình cần phải có mã lệnh để làm việc
với hệ CSDL cụ thể kèm với chương trình.
Loại 3: JDBC-Net Driver
Chuyển các lời gọi JDBC API sang một dạng chuẩn độc lập với
các hệ CSDL. Sau đó chuyển sang lời gọi của hệ CSDL cụ thể
bởi 1 chương trình trung gian
Do các nhà cung ứng thứ 3
Không cần mã lệnh kèm theo và cùng một trình điều khiển để
truy cập đến nhiều hệ CSDL khác nhau
Loại 4: Native Protocol Driver
100% java
Có khả năng giao tiếp trực tiếp với hệ CSDL không cần chuyển đổi
JDBC API
JDBC API
• Phần lớn các API nằm trong 2 gói
java.sql
javax.sql
• Được chứa trong Java SE và Java EE platform
11/25
JDBC API
JDBC API cung cấp các interface và class để thao tác dữ liệu
• DriverManager: quản lý các database driver
• Driver: xử lý giao tiếp với database server
• Connection: kết nối database
• Statement: tạo và thực thi các câu lệnh SQL
• ResultSet: lưu trữ và thao tác trên kết quả trả về
• SQLException: xử lý các ngoại lệ trong quá trình thao tác với
database
12/25
3. Các bước sử dụng JDBC
Bước 1: Thiết lập kết nối Database
Bước 2: Tạo câu lệnh truy vấn
Bước 3: Thực thi câu truy vấn
Bước 4: Xử lý kết quả trả về
Bước 5: Đóng kết nối
13/25
Bước 1: Thiết lập kết nối Database
Nạp các java package: sử dụng câu lệnh import
import java.sql.* ;
Đăng ký JDBC Driver: Trình điều khiển JDBC được nạp khi mã bytecode
của nó được nạp vào JVM. Có 2 cách:
•Sử dụng method: Class.forName(<driver name>)
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
}catch(ClassNotFoundException ex) {
System.out.println("Error");
}
14/25
Bước 1: Thiết lập kết nối Database
• Sử dụng DriverManager.registerDriver()
try {
Driver myDriver = new
oracle.jdbc.driver.OracleDriver();
DriverManager.registerDriver( myDriver );
}catch(ClassNotFoundException ex) {
System.out.println("Error");
}
15/25
Bước 1: Thiết lập kết nối Database
Xác định Database URL
• Được sử dụng để tạo kết nối đến Database
• Có thể chứa server, port, protocol…
RDBMS
MySQL
JDBC driver name
com.mysql.jdbc.Driver
URL format
jdbc:mysql://hostname/ databaseName
ORACLE
oracle.jdbc.driver.OracleDriver
jdbc:oracle:thin:@hostname:port
Number:databaseName
DB2
COM.ibm.db2.jdbc.net.DB2Driver
jdbc:db2:hostname:portNumber/database
Name
Sybase
com.sybase.jdbc.SybDriver
jdbc:sybase:Tds:hostname:
portNumber/databaseName
SQLSER
VER
com.microsoft.sqlserver.jdbc.SQL
ServerDriver
jdbc:sqlserver://
hostname:portNumber;databaseName
16/25
Bước 1: Thiết lập kết nối Database
Ví dụ
• SQL SERVER:
“jdbc:sqlserver://myserver:1433;databasename=Library”;
• Oracle thin driver
“jdbc:oracle:thin:@machinename:1521:dbname”
17/25
Bước 1: Thiết lập kết nối Database
Tạo đối tượng kết nối Connection: sử dụng 1 trong 3 cách
• DriverManager.getConnection(String url)
• DriverManager.getConnection(String url, String user, String
password)
• DriverManager.getConnection(String url, Properties info)
Chú ý: ném ra ngoại lệ SQLException
18/25
Bước 1: Thiết lập kết nối Database
• Ví dụ 1
Connection conn =DriverManager.getConnection(url);
• Ví dụ 2
Connection conn
=DriverManager.getConnection(url,"sa","123456");
• Ví dụ 3
Properties info = new Properties( );
info.put( "user", “sa" );
info.put( "password", “123456" );
Connection conn = DriverManager.getConnection(URL, info);
19/25
4. Ví dụ
Kết
nối với tập tin CSDL Access movies.mdb có một bảng tên Movies.
20/25
Ví dụ
Kết
nối với Microsoft Access thông qua cầu nối ODBC:
21/25
Ví dụ
Nhấn
vào nút Add, chọn trình điều khiển CSDL:
22/25
Ví dụ
Nhập
moviesDSN vào ô Data Source Name:
23/25
Ví dụ
Nhấn
Select và chọn tập tin CSDL cần tạo data source name:
24/25
Ví dụ
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class TestConnection{
public static void main(String args[]) {
Connection connection = null;
try { // load driver
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("Loading the driver...");
} catch( Exception e ) { //driver,class not exist
e.printStackTrace( );
return; }
25/25