Nó đại diện cho các lớp và các giao diện interface mà dụng để kết nối và truy cập dữ liệu từ các hệ cơ sở dữ liệu quan hệ RDBMS khác nhau như MySQL, Oracle, SQL Server, v.v trong các ứng
Trang 1JDBC API
IS216.O23 - GROUP 12
Trang 3Nhóm trưởng Nguyễn Thị Hồng
Trang 4VI Các thao tác cơ bản trên CSDL
III Các khái niệm cơ bản
V Kiểu dữ liệu SQL và kiểu dữ liệu JAVA
IV Kết nối CSDL với JDBC
JDBC API
I Giới thiệu
II Kiến trúc JDBC
Trang 5I GIỚI THIỆU
1 JDBC API là gì?
2 Tại sao sử dụng JDBC API?
3 Các thành phần
của JDBC
Trang 6Nó đại diện cho các lớp và
các giao diện (interface) mà
dụng để kết nối và truy cập dữ liệu từ các hệ cơ sở dữ liệu quan hệ (RDBMS) khác nhau như MySQL, Oracle, SQL
Server, v.v trong các ứng dụng Java
JDBC API bao gồm một tập hợp các lớp
và giao diện cho phép ứng dụng Java thực hiện các hoạt động như thiết lập kết nối đến cơ sở dữ liệu, thực hiện truy vấn SQL, xử lý kết quả truy vấn và quản
lý các tài nguyên cơ bản như kết nối và câu lệnh
I.1 JDBC API LÀ GÌ?
Trang 7Phiên bản JDBC API mới nhất hiện nay là 4.3, là một thành phần trong Java SE, bao gồm 2 gói package:
Chứa các lớp là giao diện cơ sở của JDBC API Đây là gói chính trong JDBC API và được sử dụng rộng rãi trong
các ứng dụng Java để thực hiện các thao tác cơ bản với cơ sở dữ liệu
Chứa các lớp và giao diện mở rộng Đây là gói bổ sung cung cấp các
thành phần liên quan đến quản lý kết nối và nguồn dữ liệu, tối ưu hiệu suất khi làm việc với cơ sở dữ liệu
Java.sql
Javax.sql
I.1 JDBC API LÀ GÌ?
Trang 8I.2 TẠI SAO SỬ DỤNG JDBC API?
- Trước JDBC, ODBC API là một database API được sử dụng để kết nối và thực hiện truy vấn với cơ sở dữ liệu Nhưng, ODBC API sử dụng
trình điều khiển ODBC được viết bằng ngôn ngữ C (tức là nền tảng phụ thuộc và không an toàn) Do đó, Java đã định nghĩa API của chính
nó (JDBC API) sử dụng trình điều khiển JDBC (viết bằng ngôn ngữ Java)
- JDBC API cung cấp cơ chế cho phép một chương trình viết bằng Java có khả năng độc lập với các hệ
cơ sở dữ liệu, có khả năng truy cập đến các hệ cơ
sở dữ liệu khác nhau mà không cần viết lại chương trình JDBC đơn giản hóa việc tạo và thi hành các câu truy vấn SQL trong chương trình
Trang 9Driver Manager: Lớp này quản lý các Database Driver Ánh xạ các yêu cầu kết nối từ ứng dụng Java với Data driver thích hợp bởi sử dụng giao thức kết nối phụ
Driver: Interface này xử lý các kết nối với Database Server Hiếm khi, bạn tương tác trực tiếp với các đối tượng Driver này Thay vào đó, bạn
sử dụng các đối tượng DriverManager để quản lý các đối tượng kiểu này
Connection: Đối tượng Connection biểu diễn ngữ cảnh giao tiếp Interface này chứa nhiều phương thức đa dạng để tạo kết nối với một Database
I.3 CÁC THÀNH PHẦN CỦA JDBC API:
JDBC API cung cấp các Class và Interface
sau:
Trang 10Statement: Bạn sử dụng các đối tượng được tạo từ Interface này để đệ trình các lệnh SQL tới Database Ngoài ra, một số Interface kết thừa từ nó cung chấp nhận thêm các tham số để thực thi các thủ tục đã
được lưu trữ
ResultSet: Các đối tượng này giữ dữ liệu được thu
nhận từ một Database sau khi bạn thực thi một truy vấn SQL Nó nóng vai trò như một Iterator để cho
phép bạn vọc qua dữ liệu của nó
SQLException: Lớp này xử lý bất cứ lỗi nào xuất hiện trong khi làm việc với Database
I.3 CÁC THÀNH PHẦN CỦA JDBC API:
Trang 11II KIẾN TRÚC JDBC
Kiến trúc JDBC tương tự như kiến trúc ODBC do Microsoft xây dựng Theo kiến trúc này các thao tác liên quan đến cơ sở dữ liệu trong chương trình được thực hiện thông qua các JDBC API Sau đó các JDBC API sẽ truyền các yêu cầu của chương trình đến bộ quản
lý trình điều khiển JDBC, là bộ phận có nhiệm vụ lựa chọn trình điều khiển thích hợp để có thể làm việc với cơ sở dữ liệu cụ thể
mà chương trình muốn kết nối
Trang 12Kiến trúc của JDBC bao gồm hai tầng chính:
Bao gồm các lớp và giao diện được sử dụng để thực hiện
các thao tác với cơ sở dữ liệu
Là một phần mềm trung gian giúp kết nối giữa ứng dụng Java và cơ sở dữ liệu Nó có nhiệm vụ chuyển đổi các yêu cầu từ ứng dụng Java thành các yêu cầu mà cơ sở dữ liệu
có thể hiểu được và chuyển đổi lại các kết quả từ cơ sở dữ liệu thành các đối tượng Java
JDBC API
DBC Driver
API
II KIẾN TRÚC JDBC
Trang 13III CÁC KHÁI NIỆM CƠ BẢN
2 JDBC URL
1 JDBC Driver
Trang 14• Kết nối: Thiết lập kết nối giữa ứng dụng Java và DBMS
• Thực thi truy vấn: Gửi các câu lệnh SQL đến DBMS và nhận kết quả
• Xử lý dữ liệu: Chuyển đổi dữ liệu giữa định dạng Java và định dạng của DBMS
• Quản lý kết nối: Đóng kết nối và giải phóng tài nguyên khi không sử dụng
Trang 15III.1 JDBC DRIVER
Loại JDBC Driver: Có 4 loại JDBC
Driver chính:
o Type-1 Driver (JDBC-ODBC
Bridge): Trình điều khiển này hoạt
động như một cầu nối giữa JDBC và
ODBC Nó chuyển đổi các cuộc gọi
JDBC thành các cuộc gọi ODBC và
sau đó gửi yêu cầu đến trình điều
khiển ODBC Nó dễ sử dụng nhưng
thời gian thực thi chậm
Trang 16III.1 JDBC DRIVER
o Type-2 (Native API Partly Java
Driver): Trình điều khiển này sử
dụng JNI (Java Native Interface) để
gọi API cụ thể của cơ sở dữ liệu từ
bên ngoài Nó nhanh hơn so với loại
trình điều khiển Type-1, nhưng yêu
cầu thư viện native và làm tăng chi
phí ứng dụng
Trang 17III.1 JDBC DRIVER
o Type-3 (Network Protocol Driver):
Trình điều khiển loại này giao tiếp
với máy chủ trung gian JDBC bằng
giao thức mạng độc quyền Phần
mềm trung gian này dịch giao thức
mạng thành các cuộc gọi dành
riêng cho từng cơ sở dữ liệu Ưu
điểm của nó là độc lập với hệ cơ sở
dữ liệu, cho phép chuyển đổi giữa
các database khác nhau Tuy nhiên
nhược điểm là hoạt động chậm do
có nhiều cuộc gọi mạng cần thực
hiện
Trang 18III.1 JDBC DRIVER
o Type-4 (Thin Driver): Trình điều
khiển này còn được gọi là trình điều
khiển Java thuần túy vì nó tương tác
trực tiếp với cơ sở dữ liệu Nó không
yêu cầu bất kỳ thư viện riêng nào
cũng như không cần máy chủ trung
gian Nó có hiệu suất tốt hơn so với
các trình điều khiển khác, nhưng
tương đối chậm do tăng số lượng
cuộc gọi mạng
Trang 19o Nhu cầu của ứng dụng
· Mỗi DBMS đều có JDBC Driver riêng, ví dụ:
o MySQL: mysql-connector-java
o SQL Server: sqljdbc
o Oracle: ojdbc
Trang 20V KIỂU DỮ LIỆU SQL VÀ KIỂU DỮ LIỆU
VARCHAR Java.lang.String LONGVARCHAR Java.lang.String DATE Java.sql.Date TIME Java.sql.Time TIMESTAMP Java.sql.Timestamp
SQL Type Java Type BINARY byte[]
VARBINARY byte[]
LONGVARBINARY byte[]
BLOB Java.sql.Blob CLOB Java.sql.Clob ARRAY Java.sql.Array REF Java.sql.Ref STRUCT Java.sql.Struct
BẢNG CHUYỂN ĐỔI TỪ KIỂU DỮ LIỆU SQL SANG
JAVA
Trang 21Java Type SQL Type
Việc chuyển đổi từ kiểu dữ liệu Java sang SQL sẽ tương tự, tuy
nhiên sẽ có một số điểm khác sau:
Trang 23· Java.sql.Statement
- Statement là một trong ba lớp JDBC cơ bản dùng để thể hiện một câu lệnh SQL
- Mọi thao tác trên CSDL được thực hiện thông qua ba phương thức của lớp
statement:
-> Phương thức executeQuery(): nhận vào một tham số là chuỗi nội dung câu
lệnh SQL và trả về một đối tượng kiểu ResultSet Phương thức này được sử dụng
trong các trường hợp câu lệnh SQL có trả về các kết quả trong CSDL
-> Phương thức executeUpdate(): cũng nhận vào một tham số là chuỗi nội dung câu lệnh SQL Tuy nhiên phương thức này chỉ sử dụng được đối với các cây lệnh cập nhật nội dung SQL Kết quả trả về là số dòng bị tác động bởi câu lệnh SQL
-> Phương thức execute(): là trường hợp tổng quát của hai phương thức trên,
nhận vào chuỗi nội dung câu lệnh SQL (truy vấn hoặc cập nhật) Nếu kết quả của câu lệnh là các dòng trong CSDL thì phương thức trả về giá trị true, ngược lại trả về giá trị false Trong trường hợp giá trị true, có thể dùng phương thức getResultSet()
để lây các dòng kết quả trả về
VI.1 CÁC LỚP CƠ BẢN
Trang 24VI.1 CÁC LỚP CƠ BẢN
Đối tượng resultset là các dòng dữ liệu trả về của câu lệnh truy vấn
CSDL Lớp này cung cấp các phương thức để rút trích các cột trong
từng dòng kết quả trả về
- Tất cả các phương thức đều có dạng: getType(int | String) trong đó tham số có thể là stt của cột hoặc tên cột cần lấy nội dung VD:
getInt(int columnIndex) hoặc getInt(String columnLabel)
- Tại một thời điểm chỉ có thể thao tác trên một dòng của resultset
Để thao tác trên dòng tiếp theo sử dụng phương thức next() Phương thức trả về giá trị true trong trường hợp có dòng tiếp theo, ngược lại trả về false
Trang 25CÁC BẠN!
Bạn có câu hỏi gì không?
CẢM ƠN