1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng lập trình java - Bài 7 ppsx

15 421 1

Đ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 15
Dung lượng 743,48 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Lê đình Thanh, Ứng dụng CSDL Nội dung Ớ Mô hình ứng dụng CSDL Ớ Sử dụng JavaDB 4 Mô hình ứng dụng CSDL Ớ JDBCJava Database Connectivity cung cấp các ựối tượng logic: kết nối, lệnh, và

Trang 1

Lê đình Thanh, Ứng dụng CSDL

Lê đình Thanh

Bộ môn Mạng và Truyền thông Máy tắnh Khoa Công nghệ Thông tin Trường đại học Công nghệ, đHQGHN

Bài giảng

LẬP TRÌNH JAVA

Ứng dụng CSDL

Bài 7

Trang 2

Lê đình Thanh, Ứng dụng CSDL

Nội dung

Ớ Mô hình ứng dụng CSDL

Ớ Sử dụng JavaDB

4

Mô hình ứng dụng CSDL

Ớ JDBC(Java Database

Connectivity) cung cấp các ựối

tượng logic: kết nối, lệnh, và

kết quả truy vấn; ựược thiết kế

ựể chạy ựộc lập với HQT

CSDL

Ớ Connectornhận lệnh của

JDBC, dịch thành lệnh của

HQT CSDL và truyền (qua

mạng) cho HQT CSDL; nhận

kết quả từ HQT CSDL và

truyền cho JDBC

Ớ HQT CSDLkhác nhau về cách

tiếp nhận và xử lý lệnh, cũng

như trả kết quả Vì vậy, ứng

với mỗi HQT CSDL, các

driver/connector tương ứng

phải ựược sử dụng

JDBC

Ứng dụng Java

DB Connector/ Driver

Hệ quản trị CSDL

Trang 3

Lê đình Thanh, Ứng dụng CSDL

Các bước

Ớ Nhập gói sql

Ớ Chọn driver

Ớ Kết nối CSDL

Ớ Thao tác CSDL

Ờ Tạo ựối tượng lệnh

Ờ Thực hiện cập nhật

Ờ Tạo ựối tượng kết quả

Ờ Thực hiện truy vấn

Ờ Sử dụng kết quả truy vấn

Ớ đóng kết nối

Nhập gói sql

Ớ Gói java.sql bao gồm các lớp cho thao tác CSDL, vì vậy cần nhập các lớp trong gói này vào ứng dụng CSDL

import java.sql.*; //nhập tất cả các lớp

//hoặc chỉ nhập các lớp ựược dùng

import java.sql.DriverManager;

import java.sql.Connection;

import java.sql.Statement;

import java.sql.ResultSet;

Trang 4

Lê đình Thanh, Ứng dụng CSDL

Chọn driver

Ớ Class.forName(driverName);

HQT CSDL driverName

MySQL com.mysql.jdbc.Driver

SQL Server com.microsoft.sqlserver.jdbc.SQLServerDriver

Derby org.apache.derby.jdbc.EmbeddedDriver JavaDB org.apache.derby.jdbc.EmbeddedDriver Oracle sql.oracle.OracleDriver

ODBC sun.jdbc.odbc.JdbcOdbcDriver PostgreSQL org.postgresql.Driver

8

Chọn driver

Ớ Nếu driver ựược cung cấp ở dạng thư viện (.jar), chúng ta phải nhập thư viện này vào chương trình.

Ờ Trong cửa sổ Projects, bấm phải chuột vào Libraries của dự án ựang phát triển, chọn Add JAR/Folder Ầ, chọn tệp jar cần nhập rồi chọn Open.

Ớ Vắ dụ, nếu sử dụng JavaDB, chúng ta cần derby driver, do vậy phải nhập derby.jar hay

derbyclient.jar trong thư mục Program

Files\Sun\JavaDB\lib

Trang 5

Lê đình Thanh, Ứng dụng CSDL

Kết nối CSDL

Ớ Connection conn =

DriverManager.getConnection(dburl, username, password);

trong ựó dburl là ựịa chỉ và tên CSDL, có dạng

Ộjdbc:xxx://IP:port//dbỢ, xxx phụ thuộc vào HQT CSDL, db là tên CSDL

Derby, JavaDB derby

Cập nhật dữ liệu

Ớ Statement stmt = conn.createStatement();

Ớ int nor = stmt.executeUpdate(sql);

sql là lệnh update, insert, delete, alter, Ầ của SQL Hàm trả về số bản ghi ựược cập nhật.

Vắ dụ:

stmt.executeUpdate(Ộupdate Sinhvien set

hoten=\ỔTrần Nguyên\Ỗ where masv=\Ỗ1\ỖỢ);

Trang 6

Lê đình Thanh, Ứng dụng CSDL

Truy vấn dữ liệu

Ớ Statement stmt = conn.createStatement();

Ớ ResultSet rs = stmt.executeQuery(Ộselect Ầ

Ợ);

Vắ dụ:

ResultSet rs = stmt.executeQuery(Ộselect * from Sinhvien where gioitinh=\ỖM\ỖỢ);

12

Truy vấn dữ liệu (tiếp)

Ớ ResultSet

Ờ lưu kết quả truy vấn dưới dạng danh sách các bản ghi với một con trỏ di chuyển ựược ban ựầu trỏ về ựầu danh sách (trước bản ghi ựầu tiên)

Ờ cung cấp các phương thức ựể duyệt danh sách Ờ di chuyển con trỏ

Ớ next()Ờ chuyển sang bản ghi kế tiếp và trả về true nếu còn bản ghi phắa sau, ngược lại trả về false

Ớ previous(), fist(), last(), beforeFirst(), afterLast().

1

-Trần Nguyên

-M

2 -Tân Thị Trang -F

97 -Trịnh Tấn -M

con trỏ cho biết Bản ghi hiện tại

next

Trang 7

Lê đình Thanh, Ứng dụng CSDL

Truy vấn dữ liệu (tiếp)

Ớ ResultSet

Ờ và các phương thứcgetXXX(tên_trường)ựọc giá trị

từng trường của bản ghi hiện tại Ờ ựang ựược trỏ bởi con trỏ, với XXX là kiểu dữ liệu của trường

Ờ Vắ dụ

Ớ rs.getInt(ỘmasvỢ) => 2

Ớ rs.getString(ỘhotenỢ) => ỘTân Thị TrangỢ

Ớ rs.getChar(ỘgioitinhỢ) => ỔFỖ

1

-Trần Nguyên

-M

2 -Tân Thị Trang -F

97 -Trịnh Tấn -M

con trỏ cho biết Bản ghi hiện tại

next

Truy vấn dữ liệu (tiếp)

try {

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(Ộselect Ầ Ợ);

while (rs.next())

{

int ma = rs.getInt(ỘmasvỢ);

String ht = rs.getString(ỘhotenỢ);

Char gt = rs.getChar(ỘgioitinhỢ);

System.out.println(ma + Ộ\tỢ + ht + Ộ\tỢ + gt);

}

}catch(Exception excp) {

System.out.println(ỘLoi truy vanỢ);

}

Các lệnh thao tác CSDL có thể gây ngoại

lệ, vì vậy cần

ựược bắt và

xử lý

Trang 8

Lê đình Thanh, Ứng dụng CSDL

Lệnh ựược chuẩn bị trước

Ớ PreparedStatement ựược dùng thay Statement ựể

tăng tốc ựộ xử lý

Ờ Cấu trúc lệnh sql ựược cung cấp trước cho

PreparedStatement như một hàm ựược dịch trước Ờ Cung cấp các tham số cho PreparedStatement trước khi thực thi như gọi hàm

PreparedStatement pstmt = con.preparedStatement("UPDATE Sinhvien SET hoten = ? WHERE masv= ? ");

pstmt.setStringt(1, ỘTôn Nhất đạiỢ);

pstmt setString(2, 14);

pstmt.executeUpdate();

16

Sử dụng stored procedure

PreparedStatement dùng ựể triệu gọi các stored procedure của CSDL nhằm tăng tốc ựộ xử lý ở cả DB Server và chương trình

CallableStatement cs = conn.prepareCall("{call

ALL_STUDENT}");

ResultSet rs = cs.executeQuery();

Trang 9

Lê đình Thanh, Ứng dụng CSDL

Sử dụng giao tác

Ớ Giao tác (transaction) ựược sử dụng ựể ựảm bảo tắnh toàn vẹn của dữ liệu

Ờ Một giao tác thường bao gồm nhiều lệnh

Ờ Khi giao tác ựược xác nhận (commit), tất cả các lệnh thuộc giao tác có hiệu lực

Ờ Nếu giao tác bị hủy bỏ (rollback), tất cả các lệnh

ựều không ựược thực hiện

Ờ Giao tác = tập các lệnh hoặc cùng ựược thực hiện hoặc cùng không ựược thực hiện

Ớ Hỏi: Vì sao giao tác ựể ựảm bảo tắnh toàn vẹn của dữ liệu? Cho vắ dụ.

Sử dụng giao tác

conn.setAutoCommit(false);

PreparedStatement updateSales = con.prepareStatement("UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ?");

updateSales.setInt(1, 50);

updateSales.setString(2, "Colombian");

updateSales.executeUpdate();

PreparedStatement updateTotal = con.prepareStatement("UPDATE COFFEES SET TOTAL = TOTAL + ? WHERE COF_NAME LIKE

?");

updateTotal.setInt(1, 50);

updateTotal.setString(2, "Colombian");

updateTotal.executeUpdate();

conn.commit();

conn.setAutoCommit(true);

Hỏi: Cơ chế thực hiện giao tác?

Trang 10

Lê đình Thanh, Ứng dụng CSDL

Sử dụng giao tác

con.setAutoCommit(false);

Statement stmt = conn.createStatement();

int rows = stmt.executeUpdate("INSERT INTO TAB1 (COL1) VALUES " + "(?FIRST?)");

Savepoint svpt1 = conn.setSavepoint("SAVEPOINT_1");

rows = stmt.executeUpdate("INSERT INTO TAB1 (COL1) " + "VALUES (?SECOND?)");

conn.rollback(svpt1);

Ầ.

con.commit();

con.setAutoCommit(true);

20

Tạo CSDL JavaDB

Trang 11

Lê đình Thanh, Ứng dụng CSDL

Tạo CSDL JavaDB (tiếp)

Kết nối CSDL JavaDB

Trang 12

Lê đình Thanh, Ứng dụng CSDL

Tạo bảng

24

Tạo bảng (tiếp)

Trang 13

Lê đình Thanh, Ứng dụng CSDL

Chạy lệnh SQL

Chạy lệnh SQL (tiếp)

Trang 14

Lê đình Thanh, Ứng dụng CSDL

Chạy lệnh SQL (tiếp)

28

Tạo view

Trang 15

Lê đình Thanh, Ứng dụng CSDL

Tạo view (tiếp)

Tiếp theo

Tạo giao diện ựồ họa

Ngày đăng: 11/08/2014, 09:25

TỪ KHÓA LIÊN QUAN

w