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

JAVA PROGRAMMING – 2012 - V2.1 JAVA PROGRAMMING potx

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 (246.89 KB, 51 trang )

JAVA PROGRAMMING – 2012 - V2.1
JAVA PROGRAMMING

JDBC
Nguyễn Hoàng Anh -

Nguyễn Hoàng Anh - - ĐHKHTN

1


JAVA PROGRAMMING – 2012 - V2.1
JAVA PROGRAMMING

Nội dung trình bày


JDBC API



Kiến trúc JDBC



Thiết lập kết nối đến cơ sở dữ liệu



Statement




PreparedStatement



CallableStatement

Nguyễn Hoàng Anh - - ĐHKHTN

2


JAVA PROGRAMMING – 2012 - V2.1
JAVA PROGRAMMING

JDBC API




JDBC API là tập các Java API được sử dụng
để tương tác với cơ sở dữ liệu quan hệ.
Công dụng


Kết nối cơ sở dữ liệu quan hệ.




Gửi các câu truy vấn đến cơ sở dữ liệu.



Nhận và xử lý các kết quả trả về từ cơ sở dữ liệu

Nguyễn Hoàng Anh - - ĐHKHTN

3


JAVA PROGRAMMING – 2012 - V2.1
JAVA PROGRAMMING

Kiến trúc JDBC

Nguyễn Hoàng Anh - - ĐHKHTN

4


JAVA PROGRAMMING – 2012 - V2.1
JAVA PROGRAMMING

Kiến trúc JDBC







Khi làm việc với JDBD, java developer sẽ làm việc như nhau
đối với các hệ cơ sở dữ liệu khác nhau.
Java developer không phụ thuộc vào một hệ cơ sở dữ liệu cụ
thể nào.
Java developer không cần phải quan tâm đến sự khác nhau khi
giao tiếp với các hệ quản trị cơ sở dữ liệu quan hệ khác nhau.

Nguyễn Hoàng Anh - - ĐHKHTN

5


JAVA PROGRAMMING – 2012 - V2.1
JAVA PROGRAMMING

Thiết lập kết nối đến cơ sở dữ liệu


Bước 1: Thêm thư viện JDBC Driver vào ứng dụng



Bước 2: Đăng ký Driver - MySQL

Cách 1: Class.forName :
Class.forName(“org.gjt.mm.mysql.Driver”);
Cách 2: DriverManager.registerDriver
Driver driver = new org.gjt.mm.mysql.Driver()
DriverManager.registerDriver(driver);


Nguyễn Hoàng Anh - - ĐHKHTN

6


JAVA PROGRAMMING – 2012 - V2.1
JAVA PROGRAMMING

Thiết lập kết nối đến cơ sở dữ liệu


MySQL
→ Database: bookonline
→ user: root , password: 123456
→ port: 3306 (default)
→ server: localhost



Java
→ url: jdbc:mysql://localhost:3306/bookonline
→ user: root , password: 123456
→ characterEncoding: utf-8
Nguyễn Hoàng Anh - - ĐHKHTN

7


JAVA PROGRAMMING – 2012 - V2.1

JAVA PROGRAMMING

Thiết lập kết nối đến cơ sở dữ liệu
1 import java.sql.*;
2 import java.util.*;
1
2
3
4
5
6
7
8
9
10
11
12

Driver driver = new org.gjt.mm.mysql.Driver();
DriverManager.registerDriver(driver);
String
conString="jdbc:mysql://localhost:3306/BookOnline";
Properties info = new Properties();
info.setProperty("characterEncoding", "utf8");
info.setProperty("user", "root");
info.setProperty("password", "root");
Connection connection =
DriverManager.getConnection(conString, info);
. . .
connection.close();

Nguyễn Hoàng Anh - - ĐHKHTN

8


JAVA PROGRAMMING – 2012 - V2.1
JAVA PROGRAMMING

Thiết lập kết nối đến cơ sở dữ liệu


Sau khi thiết lập kết nối đến cơ sở dữ liệu, có
thể


Gửi các câu truy vấn đến cơ sở dữ liệu.



Nhận và xử lý các kết quả trả về từ cơ sở dữ liệu.

Nguyễn Hoàng Anh - - ĐHKHTN

9


JAVA PROGRAMMING – 2012 - V2.1
JAVA PROGRAMMING

Các dạng Statement







Statement: Thực hiện các câu truy vấn đơn
giản.
PreparedStatement: Thực hiện các câu truy
vấn có các tham số đầu vào
CallableStatement: Thực hiện các câu truy vấn
có các tham só đầu vào và đầu ra. Cụ thể là
các store procedure

Nguyễn Hoàng Anh - - ĐHKHTN

10


JAVA PROGRAMMING – 2012 - V2.1
JAVA PROGRAMMING

Statement

Nguyễn Hoàng Anh - - ĐHKHTN

11


JAVA PROGRAMMING – 2012 - V2.1

JAVA PROGRAMMING

Statement


Statement: Thực hiện các câu truy vấn đơn
giản.

Nguyễn Hoàng Anh - - ĐHKHTN

12


JAVA PROGRAMMING – 2012 - V2.1
JAVA PROGRAMMING

Statement




Cách tạo Statement đơn giản
Statement sm = con.createStatement();
Các phương thức thường dùng
sm.executeQuery(sql); → select
sm.executeUpdate(sql); → insert,
update, delete, drop, create, …
sm.addBatch(sql) & sm.executeBatch()
→ Batch


Nguyễn Hoàng Anh - - ĐHKHTN

13


JAVA PROGRAMMING – 2012 - V2.1
JAVA PROGRAMMING

Statement - executeQuery


ResultSet rs = sm.executeQuery(sql);



ResultSet → forward : rs.next()

1
2
3
4
5
6
7
8
9
10
11

Statement statement = con.createStatement();

String sql = “SELECT * FROM DanhMuc”;
ResultSet rs = statement.executeQuery(sql);
while (rs.next()){
int maDanhMuc = rs.getInt(“MaDanhMuc”);
String tenDanhMuc = rs.getString(“tenDanhMuc”);
System.out.println(maDanhMuc+” “+tenDanhMuc);
}
rs.close();
sm.close();
con.close();

Nguyễn Hoàng Anh - - ĐHKHTN

14


JAVA PROGRAMMING – 2012 - V2.1
JAVA PROGRAMMING

Statement - executeQuery


Forward & Backward
Statement sm=
connection.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);




ResultSet rs = sm.executeQuery(sql);



ResultSet rs
→ forward : rs.next();
→ backward: rs.previous();
Nguyễn Hoàng Anh - - ĐHKHTN

15


JAVA PROGRAMMING – 2012 - V2.1
JAVA PROGRAMMING

Statement – executeUpdate
1
2
3
4
5
6
7
8
9
10

Statement sm = con.createStatement();
String sql = “DELETE FROM Sach WHERE MaDanhMuc= 1”;
int n = sm.executeUpdate (sql);

if (n >= 0){
System.out.println(n + “ Sách đã được xóa”);
}else{
System.out.println(“Lỗi”);
}
sm.close();
con.close();

Nguyễn Hồng Anh - - ĐHKHTN

16


JAVA PROGRAMMING – 2012 - V2.1
JAVA PROGRAMMING

Statement – executeUpdate
1
2
3
4
5
6
7
8
9
10
11
12
13

14

Statement sm = con.createStatement();
String sql = String.format(“UPDATE DanhMuc
SET TenDanhMuc = '%s'”
WHERE MaDanhMuc= %d”,
maDanhMuc, tenDanhMuc);
int n = sm.executeUpdate (sql);
if (n >= 0){
System.out.println(“Cập nhật thành cơng”);
}else{
System.out.println(“Lỗi”);
}
sm.close();
con.close();

Nguyễn Hồng Anh - - ĐHKHTN

17


JAVA PROGRAMMING – 2012 - V2.1
JAVA PROGRAMMING

Statement – executeUpdate
1
2
3
4
5

6
7
8
9
10
11

Statement sm = con.createStatement();
String sql = String.format(“INSERT INTO DanhMuc
(TenDanhMuc) VALUES('%s')”,tenDanhMuc);
int n = sm.executeUpdate (sql);
if (n >= 0){
System.out.println(“Thêm thành cơng”);
}else{
System.out.println(“Lỗi”);
}
sm.close();
con.close();

Nguyễn Hồng Anh - - ĐHKHTN

18


JAVA PROGRAMMING – 2012 - V2.1
JAVA PROGRAMMING

Statement – executeUpdate
1
2

3
4
5
6
7
8
9
10
11
12
13
14
15

String tenDanhMuc = "C++";
String sql= String.format("INSERT INTO
DANHMUC(TENDANHMUC) VALUES '%s')", tenDanhMuc);
int n=sm.executeUpdate(sql,
Statement.RETURN_GENERATED_KEYS);
if(n>0){
System.out.println("Thêm thành công");
ResultSet rs=statement.getGeneratedKeys();
if(rs.next()){
int mdm = rs.getInt(1);
System.out.println("Mã danh mục vừa thêm:" +mdm);
}
}
sm.close();
con.close();


Nguyễn Hoàng Anh - - ĐHKHTN

19


JAVA PROGRAMMING – 2012 - V2.1
JAVA PROGRAMMING

Statement – executeUpdate
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

String [] tenDanhMucs = {"C++", "C#", "Java"};
String sql="INSERT INTO DANHMUC(TENDANHMUC) VALUES ";

for(int i=0; isql=sql + String.format("('%s') ", tenDanhMucs[i]);
if(i}
int n=stm.executeUpdate(sql,
Statement.RETURN_GENERATED_KEYS);
if(n>0){
System.out.println("Thêm thành công");
ResultSet rs=statement.getGeneratedKeys();
while(rs.next()){
int mdm = rs.getInt(1);
System.out.println("Mã danh mục vừa thêm: " + mdm);
}
}
sm.close();
con.close();
Nguyễn Hoàng Anh - - ĐHKHTN

20


JAVA PROGRAMMING – 2012 - V2.1
JAVA PROGRAMMING

Statement – executeBatch
1
2
3
4
5

6
7
8
9
10
11

String sql1="INSERT INTO DANHMUC(TENDANHMUC)
VALUES('Java')";
String sql2="INSERT INTO DANHMUC(TENDANHMUC)
VALUES('PHP')";
String sql3="UPDATE DANHMUC SET TENDANHMUC='C'
WHERE MADANHMUC=43";
Statement statement=connection.createStatement();
statement.addBatch(sql1);
statement.addBatch(sql2);
statement.addBatch(sql3);
int [] n = statement.executeBatch();

Nguyễn Hoàng Anh - - ĐHKHTN

21


JAVA PROGRAMMING – 2012 - V2.1
JAVA PROGRAMMING

Statement - SQLException
1
2

3
4
5
6
7

try{
. . .
}catch(SQLException ex){
. . .
}finally{
con.close();
}

Nguyễn Hoàng Anh - - ĐHKHTN

22


JAVA PROGRAMMING – 2012 - V2.1
JAVA PROGRAMMING

Statement


Statement: Thực hiện các câu truy vấn đơn
giản?

Nguyễn Hoàng Anh - - ĐHKHTN


23


JAVA PROGRAMMING – 2012 - V2.1
JAVA PROGRAMMING

PreparedStatement

Nguyễn Hoàng Anh - - ĐHKHTN

24


JAVA PROGRAMMING – 2012 - V2.1
JAVA PROGRAMMING

PreparedStatement


PreparedStatement: Thực hiện các câu truy
vấn có các tham số đầu vào

Nguyễn Hồng Anh - - ĐHKHTN

25


×