1. Trang chủ
  2. » Giáo án - Bài giảng

Bài giảng Lập trình mạng Thread trong Java

37 481 0

Đ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 37
Dung lượng 517,43 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ập trình mạng Thread trong Java Giảng viên: TS. Nguyễn Mạnh Hùng Học viện Công nghệ Bưu chính Viễn thông (PTIT Nội dung  Mô hình kiến trúc Thread  Khai báo và phương thức chính  Trao đổi dữ liệu giữa các thread  Ví dụ  Bài tập

Trang 1

Lập trình mạng Java kết nối cơ sở dữ liệu

Giảng viên: TS Nguyễn Mạnh Hùng

Học viện Công nghệ Bưu chính Viễn thông (PTIT)

Trang 3

Kết nối DB bằng JDBC

Trang 5

Kết nối bằng JDBC (2)

public Connection getConnection(String dbClass , String dbUrl , String

userName , String password ) throws SQLException {

Connection conn = null;

Trang 6

Chuẩn bị câu lệnh SQL

Trang 7

Dùng Statement (1)

String query = "Select * FROM users" ;

String query = "INSERT INTO users VALUES(« aaa », « bbb »)" ;

String query = "UPDATE password FROM users WHERE id = 111 VALUE(« ccc »)" ;

String query = "DELETE FROM users HERE id = 111" ;

Trang 8

Dùng Statement (2)

try {

Statement stmt = conn createStatement();

ResultSet rs = stmt executeQuery( query );

Trang 9

Dùng PreparedStatement

PreparedStatement updateSales = null;

String updateString = "update products " +

"set SALES = ? where ID = ?" ;

try {

updateSales = conn prepareStatement( updateString );

updateSales setInt(1, value );

updateSales setInt(2, productId );

updateSales executeUpdate();

} catch (SQLException e ) {

throw e;

Trang 10

Dùng StoreProcedure (1)

String createProcedure =

"create procedure GET_MAX_OF_SALE(IN productId int,

OUT value int) " + "begin " +

"select MAX(value) into productValue " +

Trang 12

Lấy dữ liệu ra

Trang 13

Dữ liệu từ ResultSet (1)

String query = "Select * FROM users" ;

try {

Statement stmt = conn createStatement();

ResultSet rs = stmt executeQuery( query );

Trang 14

Dữ liệu từ ResultSet (2)

String query = "Select * FROM users" ;

try {

Statement stmt = conn createStatement();

ResultSet rs = stmt executeQuery( query );

// get number of row in resultSet

Trang 15

Làm việc với Transaction

Trang 17

Điều khiển chế độ commit (2)

public void updateSales(int productId, int value) throws

SQLException {

PreparedStatement updateSales = null;

PreparedStatement updateTotal = null;

String updateString = "update products " +

"set SALES = ? where ID = ?" ;

String updateStatement = "update totalSale " +

"set TOTAL = TOTAL + ? where productId = ?" ;

try {

conn setAutoCommit(false);

updateSales = conn prepareStatement(updateString);

Trang 18

if (updateSales != null) { updateSales.close(); }

if (updateTotal != null) { updateTotal.close(); }

conn setAutoCommit(true);

}

}

Trang 19

Ví dụ: Bài toán quản lí đặt

phòng khách sạn

Trang 20

Bài toán

 Một khách sạn (id, tên, địa chỉ, số sao, mô tả) có nhiều

phòng (id, hạng phòng, mô tả)

 Mỗi phòng có thể được đặt bởi nhiều khách hàng (id, tên,

mô tả) tại nhiều thời điểm khác nhau

 Mỗi khách hàng có thể đặt nhiều phòng tại nhiều thời điểm

khác nhau

 Mỗi khách hàng chỉ ở 1 phòng tại 1 thời điểm nhất định, xác

định 1 giá xác định

 Khách hàng chỉ có thể đặt phòng nếu phòng còn trống trong

suốt thời gian khách hàng muốn đặt

 Khi trả phòng, nhân viên in phiếu thanh toán bao gồm tên

khách sạn, tên khách hàng, số phòng, hạng phòng, ngày

đến, ngày đi và tổng số tiền thanh toán

Trang 21

Yêu cầu

 Thiết kế các bảng CSDL cho bài toán

 Định nghĩa các lớp thực thể cho bài toán

 Định nghĩa phương thức thêm một phòng khách sạn vào

CSDL

 Định nghĩa phương thức tìm kiếm danh sách phòng trống

trong một khoảng thời gian xác định

 Định nghĩa phương thức cho phép 1 khách hàng đặt một

phòng trong một thời gian xác định

 Định nghĩa phương thức tính doanh thu của khách sạn trong

một thời gian xác định

Trang 22

Thiết kế CSDL (1)

 Trước hết cần có 3 bảng:

tblHotel : id, name, level, description

tblRoom : id, type, description

tblCustomer : id, name, username, password, role, description

Nhận xét:

 1 khách sạn có nhiều phòng, 1 phòng chỉ ở trong 1 khách sạn

→ quan hệ giữa bảng tblHotel và tblRoom là 1-n

 1 khách hàng đặt nhiều phòng, 1 phòng cũng có nhiều người

đặt → quan hệ giữa tblRoom và tblCustomer là n-n, → phải

chuẩn hóa

→ Tạo thêm một bảng đặt chỗ chi tiết tblBooking : idRoom,

idCustomer, startDate, endDate, price, description

→ quan hệ giữa tblRoom và tblBooking là 1-n (một phòng có nhiều

lần đặt), và giữa tblCustomer và tblBooking cũng là 1-n (một người

có nhiều lần đặt)

Trang 23

Thiết kế CSDL (2)

Trang 24

Các lớp thực thể (1)

 Trước hết cần có 4 lớp:

Hotel : id, name, level, description, listRoom

Room : id, type, description

Customer : id, name, username, password, role, description

Booking : id, room, customer, startDate, endDate, price, description

Nhận xét:

 1 khách sạn có nhiều phòng → thuộc tính listRoom có dạng

một mảng các đối tượng kiểu Room

 1 phiếu đặt phòng có 1 phòng → thuộc tính room có dạng một

đối tượng kiểu Room

 1 phiếu đặt phòng có 1 khách hàng → thuộc tính customer có

dạng một đối tượng kiểu Customer

Trang 25

Các lớp thực thể (2)

Trang 26

"INSERT INTO tblRoom(hotelId, type, description) " +

"VALUES(hotelId, type, description); " +

Trang 28

"SELECT * FROM tblRoom WHERE " +

"RoomID NOT IN (SELECT RoomId from tblBooking WHERE " + "((StartDate BETWEEN sDate AND eDate) OR " +

"(EndDate BETWEEN sDate AND eDate) OR " +

"(sDate BETWEEN StartDate AND EndDate) OR " +

"(eDate BETWEEN StartDate AND EndDate)))" +

Trang 29

Tìm phòng trống (2)

public Room[] searchFreeRoom(Date sd, Date ed) throws SQLException{

Room[] result = null ;

Trang 30

"INSERT INTO tblBooking(roomId, customerId, startDate," +

"endDate, price, description) VALUES(roomId, customerId, " + "sDate, eDate, price, description); " +

Trang 32

"((b.startDate BETWEEN sDate AND eDate) AND " +

"(b.endDate BETWEEN sDate AND eDate)))" +

Trang 34

"SELECT a.* FROM tblRoom a ORDER BY " +

"(SELECT SUM(DATEDIFF(DAY, b.startDate, b.endDate)) " +

"FROM tblBooking b WHERE b.roomId = a.id) DESC;" +

Trang 35

Tìm phòng đặt nhiều (2)

public Room[] searchHotRoom() throws SQLException{

Room[] result = null ;

Trang 37

Questions?

Ngày đăng: 12/09/2014, 10:07

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w