Tải bản đầy đủ (.pdf) (33 trang)

bài giảng lập trình java cơ bản chương 7 gv võ hoàng phương dung truy cập cơ sở dữ liệu với jdbc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (547.72 KB, 33 trang )

L
L


P TRÌNH JAVA
P TRÌNH JAVA
Chương 7
TRUY CẬP CƠ SỞ
DỮ LIỆU VỚI JDBC
GV: Võ Hoàng Phương Dung

Giới thiệu về JDBC

Cấu trúc JDBC

Các bước sử dụng JDBC
2/25
N
N


i dung
i dung

Viết tắt của Java Database Connectivity

Là Java API chuẩn cho việc kết nối Java
application đến Database

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
Gi
Gi


i thi
i thi


u v
u v


JDBC
JDBC

JDBC hỗ trợ 2 loại truy cập dữ liệu
4/25
C
C


u tr
u tr
ú
ú
c c

c c


a JDBC
a JDBC
2-tier 3-tier

Cấu trúc JDBC gồm 2 phần
• JDBC API
• JDBC Driver
5/25
C
C


u tr
u tr
ú
ú
c c
c c


a JDBC
a JDBC

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
6/25
C
C


u tr
u tr
ú
ú
c c
c c


a JDBC
a JDBC

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
7/25
C

C


u tr
u tr
ú
ú
c c
c c


a JDBC
a JDBC

JDBC Driver
• Tất cả các Database server đều có JDBC driver
tương ứng
• 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
8/25
C
C



u tr
u tr
ú
ú
c c
c c


a JDBC
a JDBC

JDBC driver loại 1: JDBC-ODBC
9/25
C
C


u tr
u tr
ú
ú
c c
c c


a JDBC
a JDBC

JDBC driver loại 2: Native API

10/25
C
C


u tr
u tr
ú
ú
c c
c c


a JDBC
a JDBC

JDBC driver loại 3: Net pure Java
11/25
C
C


u tr
u tr
ú
ú
c c
c c



a JDBC
a JDBC

JDBC driver loại 4: 100% pure Java
12/25
C
C


u tr
u tr
ú
ú
c c
c c


a JDBC
a 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

C
C
á
á
c bư
c bư


c s
c s


d
d


ng JDBC
ng JDBC

Nạp các java package: sử dụng câu lệnh import
import java.sql.* ;

Đăng ký JDBC Driver: 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…
16/25
Bước 1: Thiết lập kết nối Database
RDBMS JDBC driver name URL format
MySQL com.mysql.jdbc.Driver 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

Ví dụ
• SQL SERVER:
“jdbc:sqlserver://myserver:1433;databasename=Lib
rary”;
• 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
Bước 1: Thiết lập kết nối Database

Sử dụng 1 trong 3 đối tượng
• Statement: thực thi câu sql không chứa biến
Statement stmt = conn.createStatement( );
• PreparedStatement: thực thi câu sql chứa biến

Các biến được chỉ định bởi dấu ?

Truyền biến vào câu lệnh bằng phương thức
setXXX(index,value) với XXX là kiểu dữ liệu của biến
Ví dụ:
String SQL = "Update Employees SET age = ? WHERE id = ?";
PreparedStatement pstmt=conn.prepareStatement(SQL);
pstmt.setInt(1,4);
Pstmt.setInt(2,5);
20/25
Bước 2: Tạo câu lệnh truy vấn
• CallableStatement: để thực thi các stored-procedure

Sử dụng pt Connection.prepareCall() để khởi tạo

Có 3 loại biến

Biến IN: truyền giá trị bằng pt setXXX(index, value)


Biến OUT: lấy giá trị bằng pt getXXX(index)

Biến INOUT: truyền giá trị bằng setXXX(index, value), lấy giá trị
bằng getXXX(index)

Ví dụ
CallableStatement cstmt = null;
try {
String SQL = "{call getEmpName (?, ?)}";
cstmt = conn.prepareCall(SQL);
} catch (SQLException e) {}
21/25
Bước 2: Tạo câu lệnh truy vấn

Sử dụng 1 trong 3 phương thức
• boolean execute(String SQL): trả lại true nếu kết
quả trả về của câu lệnh truy vấn là ResultSet
• int executeUpdate(String SQL): trả lại số row bị
ảnh hưởng, sử dụng cho Insert, Update, Delete
• ResultSet executeQuery(String SQL): trả lại 1 đối
tượng ResultSet, sử dụng cho Select
Ví dụ
ResultSet rs = statement.executeQuery(“select * from
tblEmployer”);
int n=statement.executeUpdate(“update tblEmployer set
age=’40’ where id=‘1’ ”);
22/25
Bước 3: Thực thi câu truy vấn


ResultSet cung cấp các phương thức để xử lý
các kết quả trả về từ câu lệnh SQL

ResultSet chứa dữ liệu theo dạng Table

Truy cập các hàng dữ liệu bằng cách di chuyển
con trỏ của ResultSet

Ban đầu, con trỏ chỉ hàng đầu tiên
23/25
Bước 4: Xử lý kết quả trả về

Các loại ResultSet (ResultSet Types): xét về
loại con trỏ và sự phản ánh thay đổi dữ liệu
• ResultSet.TYPE_FORWARD_ONLY (mặc định):
con trỏ chỉ dịch chuyển tiến đến trong ResultSet
• ResultSet.TYPE_SCROLL_INSENSITIVE: con
trỏ có thể dịch chuyển đến và lùi, ResultSet không
cập nhật các thay đổi trong Database sau khi đã
được tạo
• ResultSet.TYPE_SCROLL_SENSITIVE: con trỏ
có thể dịch chuyển đến và lùi, ResultSet cập nhật
các thay đổi trong Database sau khi đã được tạo
24/25
Bước 4: Xử lý kết quả trả về

Các loại ResultSet (ResultSet Concurrency):
xét về chức năng thay đổi dữ liệu
• ResultSet.CONCUR_READ_ONLY (mặc định):
ResultSet chỉ đọc

• ResultSet.CONCUR_UPDATABLE: ResultSet có
thể thay đổi được dữ liệu
25/25
Bước 4: Xử lý kết quả trả về

×