1. Trang chủ
  2. » Cao đẳng - Đại học

SLIDE MÔN JAVA - CHƯƠNG 7 - TRUY CẬP CƠ SỞ DỮ LIỆU VỚI JDBC

47 525 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 47
Dung lượng 823,5 KB

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 Nội dung...  Viết tắt của Java Dat

Trang 2

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

Nội dung

Trang 3

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

1 Giới thiệu về JDBC

Trang 4

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ể.

Cấu trúc của JDBC

Trang 5

2 JDBC Driver

chính nhà xây dựng hệ quản trị CSDL hoặc do nhà cung ứng thứ ba cung cấp.

hiện các câu lệnh SQL.

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ỉ:

http://industry.java.sun.com/products/jdbc/drivers.

Trang 7

Loại 1: JDBC/ODBC

hiện

trong bộ J2SE với tên:

sun.jdbc.odbc.JdbcOdbcDriver

Trang 8

Loại 2: Native API Driver

tương ứng với từng hệ CSDL cụ thể.

với hệ CSDL cụ thể kèm với chương trình.

Trang 9

Loại 3: JDBC-Net Driver

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

truy cập đến nhiều hệ CSDL khác nhau

Trang 10

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

Trang 12

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

JDBC API

Trang 13

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

3 Các bước sử dụng JDBC

Trang 14

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

System.out.println("Error");

}

Bước 1: Thiết lập kết nối Database

Trang 15

• Sử dụng DriverManager.registerDriver()

try {

Driver myDriver = new

oracle.jdbc.driver.OracleDriver(); DriverManager.registerDriver( myDriver );

Trang 16

Xác định Database URL

• Được sử dụng để tạo kết nối đến Database

• Có thể chứa server, port, protocol…

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

com.microsoft.sqlserver.jdbc.SQL ServerDriver

jdbc:sqlserver://

hostname:portNumber;databaseName

Trang 18

Tạo đối tượng kết nối Connection: sử dụng 1 trong 3 cách

Trang 19

Properties info = new Properties( );

info.put( "user", “sa" );

Trang 20

Kết nối với tập tin CSDL Access movies.mdb có một bảng tên Movies.

4 Ví dụ

Trang 21

Kết nối với Microsoft Access thông qua cầu nối ODBC:

21/25

Ví dụ

Trang 22

Nhấn vào nút Add, chọn trình điều khiển CSDL:

Ví dụ

Trang 23

Nhập moviesDSN vào ô Data Source Name:

23/25

Ví dụ

Trang 24

Nhấn Select và chọn tập tin CSDL cần tạo data source name:

Ví dụ

Trang 25

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

Ví dụ

Trang 27

finally {

if( connection != null ) {

try { connection.close( ); } catch( SQLException e ) {

e.printStackTrace( );}

} } }

27/25

Ví dụ

Trang 28

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

Trang 29

• 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 (?, ?)}";

Trang 30

Bước 2: Tạo câu lệnh truy vấn

public MovieDatabase(Connection connection)

Trang 31

Bước 2: Tạo câu lệnh truy vấn

ResultSet results = selectAll.executeQuery(sql);

while(results.next()){

int number = results.getInt(1);

String title = results.getString("title");

String category = results.getString(3);

String format = results.getString(4);

Movie movie = new Movie(number, title, category,

format);

System.out.println(movie.toString());

}

Trang 32

Bước 2: Tạo câu lệnh truy vấn

Trang 33

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,

Trang 34

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

Bước 4: Xử lý kết quả trả về

Trang 35

Các loại ResultSet (ResultSet Types): xét về loại con trỏ và sự phản

ánh thay đổi dữ liệu

Trang 36

Các loại ResultSet (ResultSet Concurrency): xét về chức năng thay đổi

Trang 37

Loại ResultSet được xác định đồng thời tại lúc tạo đối tượng statement

• createStatement(int RSType, int RSConcurrency);

• prepareStatement(String SQL, int RSType, int RSConcurrency);

• prepareCall(String SQL, int RSType, int RSConcurrency);

RSType: chỉ định ResultSet Types RSConcurrency: chỉ định ResultSet Concurrency

37/25

Bước 4: Xử lý kết quả trả về

Trang 38

Ví dụ

Statement stmt = conn.createStatement(

ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);

• Các phương thức di chuyển con trỏ

• Các phương thức lấy dữ liệu trong ResultSet

• Các phương thức cập nhật dữ liệu

Bước 4: Xử lý kết quả trả về

Trang 39

Các phương thức di chuyển con trỏ

public boolean absolute(int row) throws

về cuối ResultSet và ngược lại public boolean previous() throws

SQLException 

di chuyển đến hàng đứng phía trước

public void moveToInsertRow() throws

SQLException 

di chyển đến 1 hàng mới để chèn dữ liệu Vị trí hiện tại sẽ được lưu lại public void moveToCurrentRow() throws

SQLException 

di chuyển về lại vị trí cũ nếu con trỏ đang chỉ đến vị trí hàng vừa được chen

Trang 40

Các phương thức lấy dữ liệu trong ResultSet

• getXXX(String columnName) throws SQLException

• getXXX(int columnIndex) throws SQLException

XXX: là kiểu tương ứng của dữ liệu columnName: tên của cột trong ResultSet columnIndex: chỉ số của cột trong ResultSet, bắt đầu từ 1

Bước 4: Xử lý kết quả trả về

Trang 41

Câu lệnh insert

public void addMovie(Movie movie){

System.out.println(“Adding movie: “ + movie.toString());

try{

Statement addMovie = connection.createStatement();

String sql = “INSERT INTO Movies VALUES(“

Trang 42

Câu lệnh insert

Movie [] movies = new Movie[6];

movies[0] = new Movie(1, “Star Wars: A New Hope”,

movies[4] = new Movie(5, “Star Wars: Attack of the

Clones”, “Science Fiction”, “DVD”);

movies[5] = new Movie(6, “Toy Story”, “Children”,

“DVD”);

Trang 44

Các phương thức cập nhật dữ liệu

• Cập nhật dữ liệu trong ResultSet

 public void updateXXX(int columnIndex, XXX s) throws SQLException

 public void updateXXX(String columnName, XXX s) throws SQLException

• Cập nhật dữ liệu từ ResultSet đến Database

Bước 4: Xử lý kết quả trả về

public void updateRow() Cập nhật các thay đổi của hàng hiện tại trong

ResultSet đến Database public void deleteRow() Xóa hàng hiện tại trong Database

public void refreshRow() Lấy dữ liệu trong Database vào ResultSet

public void cancelRowUpdates() Hủy bỏ các thay đổi dữ liệu vừa được thực hiện

Trang 46

Transaction: là một khối các thao tác cần được thực hiện tương ứng với nhau

Kết nối JDBC mặc định ở chế độ auto-commit: mỗi câu lệnh SQL được hoàn thành riêng lẻ

Một transaction sẽ được bắt đầu khi chấm dứt chế độ auto-commit và kết thúc khi đối tượng kết nối thực hiện phương thức commit()

6 Transaction

Ngày đăng: 23/06/2017, 20:17

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w