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

Lap Trinh java bai giang chuong 6

25 421 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 25
Dung lượng 619,84 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 cơ bản với Java Tác giả: PGS.TS Trần Văn Lăng, Ths. Chu Nguyên Hoàng Minh Giúp các bạn tiếp cần gần hơn với bộ môn lập trình để trở thành một Lập trình viên suất sắc Lập trình cơ bản với Java Tác giả: PGS.TS Trần Văn Lăng, Ths. Chu Nguyên Hoàng Minh Giúp các bạn tiếp cần gần hơn với bộ môn lập trình để trở thành một Lập trình viên suất sắc

Trang 1

Bảng phân chia thời lượng:

Trang 2

243

6.1 iới hiệ n

Hầu h hương ình m y ính h n này đ u ít nhiều n qu n đ n vi c truy xuất hông n ong ơ sở dữ li u Chính vì th nên các thao tác h trợ lập ình ơ sở dữ

li u là chứ năng không hể thi u c a các ngôn ngữ lập trình hi n đạ , ong đó ó

C API à hư 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 ơ sở dữ li u

Phiên b n JDBC API m i nhất hi n nay là 3.0, là một thành phần trong J2SE, nằm ong 2 gó hư n:

 java.sql: chứa các l p à g o d n ơ sở c a JDBC API

 javax.sql: chứa các l p và giao di n mở rộng

JDBC API cung cấp ơ h cho phép mộ hương ình t bằng Java có kh năng độc lập v i các h ơ sở dữ li u, có kh năng uy ập đ n các h ơ sở dữ li u khác nhau

mà không cần vi t lạ hương ình C đơn g n hóa vi c tạo và thi hành các câu truy vấn Q ong hương ình

6.2 iến c n 2] trang 629)

Ki n trúc c a c C ương ự như k n trúc ODBC do Microsoft xây dựng Theo

ki n này h o n qu n đ n ơ sở dữ li u ong hương ình được thực hi n hông qu C API u đó C API sẽ truyền các yêu cầu c hương trình

đ n bộ qu n ình đ ều khiển JDBC, là bộ phận có nhi m vụ lựa chọn ình đ ều khiển thích hợp để có thể làm vi c v ơ sở dữ li u cụ thể mà hương ình mu n k t n i Như ậy ki n trúc c a JDBC gồm 2 tầng: tầng đầu tiên là các JDBC API, có nhi m

vụ chuyển các câu l nh SQL cho bộ qu n ình đ ều khiển JDBC; tầng thứ 2 là các JDBC Driver API, thực hi n nhi m vụ li n h v ình đ ều khiển c a h qu n trỉ ơ sở dữ

li u cụ thể

Trang 3

244 Hình n dư i minh họa các l p và giao di n ơ n trong JDBC API

Trang 4

245

6.3 Các khái niệm cơ bản ([1] trang 282, [2] trang 632)

6.3.1 JDBC Driver

Để có thể ti n hành truy cập đ n các h qu n trị ơ sở dữ li u s dụng kỹ thuật JDBC, chúng ta cần ph ò ình đ ều khiển JDBC c a h qu n trị CSDL mà chúng ta

đ ng s dụng T ình đ ều khiển C à đoạn hương ình, do hính nhà ây dựng h

qu n trị CSDL hoặc do nhà cung ứng thứ ba cung cấp, có kh năng y u ầu h qu n trị CSDL cụ thể thực hi n các câu l nh SQL

nh s h ình đ ều khiển JDBC cho các h qu n trị CSDL khá nh u được

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

C ình đ ều khiển C được phân làm 04 loại khác nhau:

 Loại 1: có tên gọ à dge e T ình đ ều khiển loại này k t n i v i các h

CSDL thông qua cầu n O C Đây hính à ình đ ều khiển được s dụng phổ

bi n nhất trong những ngày đầu Java xuất hi n Tuy nh n, ngày n y ình đ ều khiển loại này không còn phổ bi n do có nhiều hạn ch T ình đ ều khiển loại này uôn được cung cấp kèm trong bộ J2SE v i tên: sun.jdbc.odbc.JdbcOdbcDriver

 Loại 2: Có tên gọ à N e API e T ình đ ều khiển loại này sẽ chuyển các

lời gọi c C API s ng hư n hàm (API) ương ứng v i từng h CSDL cụ thể T ình đ ều khi n loạ này hường chỉ do nhà xây dựng h CSDL cung cấp Đểcó thề h hành hương ình mã nh để làm vi c v i h CSDL cụ thể cần

ph được cung cấp đ kèm hương ình

Trang 5

246

 Loại 3: có tên gọi là JDBC-Ne e T ình đ ều khiển loại này sẽchuyển các lời

gọi JDBC API sang một dạng chuẩn độc lập v i các h C , à s u được chuyển sang lời gọi c a h CSDL cụ thể bỡ 1 hương ình ung g n T ình đ ều khiển

c a các nhà cung ứng thứ 3 hường thuộc loại này Lợi th c ình đ ều khiển loại này là không cần cung cấp mã l nh kèm theo và có thể s dụng cùng một trình

đ ều khiển để truy cập đ n nhiều h CSDL khác nhau

 Loại 4: Có tên gọ à N e P o o o e T ình đ ều khiển loại này chuyển các

lời gọi JDBC API sang mã l nh c a h CSDL cụ thể Đây à ình đ ều khiển thần Ja , ó nghĩ à không ần ph i có mã l nh c a h CSDL cụ thể khi thi hành hương ình

6.3.2 JDBC URL

Để có thể k t n i v i CSDL, chúng ta cần định nguồn dữ li u cùng v i các thông s n qu n dư i dạng 1 UR như s u: jd :<su p o o o >:<dsn>:<o hers>

T ong đó:

 <su p o o o >: đượ dùng để định ình đ ều khiển để k t n i v i CSDL

Trang 6

6.4.1 Đăn ký ình điều khiển

T ình đ ều khiển C được nạp khi mã bytecode c nó được nạp vào JVM Một

h đơn g n để thực hi n công vi c này là thự h phương hức

C ss fo N me(“< C e >”)

Ví dụ: để nạp ình đ ều khiển s dụng cầu n i ODBC do Sun cung cấp, chúng ta s dụng

câu l nh s u C ss fo N me(“sun jd od d Od e ”)

6.4.2 Thực hiện kết nối

u kh đã nạp trình đ ều khiển JDBC, vi c k t n i v C được thực hi n v i

mộ ong phương hức sau trong l p DriverManager:

 public static Connection getConnection(String url) throws SQLException: thực

hi n k t n i v C được yêu cầu Bộ qu n ình đ ều khiển sẽ tự động lựa chọn ình đ ều khiển phù hợp trong s ình đ ều khiển đã được nạp

 public static Connection getConnection(String url, String user, String pass)throws SQLException: ti n hành k t n i t i CSDL v i tài kho n user và mật mã pass

 public static Connection getConnection(String url, Properties info) throws

Q E ep on: ương ự h phương hức trên ngoài ra cung cấp thêm các thông

n qu định thuộc tính k t n hông qu đ ượng c a l p Properties

Trang 7

248

K t qu tr về c phương hức trên là mộ đ ượng c a l p

j sq Conne on đượ dùng để đại di n cho k t n đ n CSDL

6.4.3 Ví dụ

Trong phần ví dụ này chúng ta sẽ tìm hi u h kh nh u để k t n i v i tập tin CSDl Access movies.mdb có một b ng tên Movies B ng này gồm các cột number, title, category và fomat

Để có thể ti n hành k t n i v i Microsoft Access thông qua cầu n i ODBC sau khi

đã ạo tập tin CSDL movies.mdb, chúng ta cần ph i tạo Data Source Name cho CSDL bằng cách vào Control Panel và chọn ODBC Data Source

Ti p theo nhấn vào nút Add, bạn sẽ thấy hiển thị d nh s h ình đ ều khiển CSDL hi n có

Trang 9

public class TestConnection{

public static void main(String args[]){

Connection connection = null;

if(args.length != 1){

System.out.println("Syntax: java TestConnection " + "DSN");

return;

} try { // load driver

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

System.out.println("Loading the driver ");

}catch(Exception e){//problem load driver,class not exist

e.printStackTrace( );

return;

} try{

Trang 10

} }

}

Sau khi biên dị h đoạn hương ình n, h ng ó hể thực hi n k t n i v i CSDL bằng cách thực thi câu l nh: java TestConnection moviesDSN

6.5 iể ữ liệ kiể ữ liệ

Trong quá trình thao tác v i CSDL, chúng ta sẽ gặp ph i vấn đề chuyển đổi giữa kiểu dữ li u trong CSDL sang kiểu dữ li u Java h trợ à ngược lai Vi c chuyển đổi này được thực hi n như ong 2 ng sau

Trang 11

B ng chuyển đổi từ kiểu dữ li u SQL sang Java

Trang 12

c a l p j sq Resu e , ngược lại (các câu l nh h y đổi nội dung CSDL) sẽ tr về k t

qu là mộ s nguy n C đ ượng c a l p ResultSet cho phép chúng ta truy cập đ n k t

qu tr về c a các câu truy vấn

Trang 13

254

6.6.1 Các lớp cơ bản

 java.sql.Statement

Statement là một trong 3 l p C ơ n dùng để thể hi n một câu l nh SQL Mọi

h o n C được thực hi n hông qu 3 phương hức c a l p Statemen Phương thức executeQuery() nhận vào 1 tham s là chu i nội dung câu l n SQL và tr về 1 đ i ượng kiểu Resu e Phương hứ này được s dụng ong ường hợp câu l nh SQL

có tr về các k t qu trong CSDL

Phương hứ e e u eUpd e() ũng nhận vào 1 tham s là chu i nội dung câu l nh SQL Tuy nhi n phương hức này chỉ s dụng đượ đ i v i các cây l nh cập nhật nội dung CSDL K t qu tr về là s dòng bị động bỡi câu l nh SQL

Phương hứ e e u e() à ường hợp tổng quát c 2 phương hức tr n Phương hức nhận vào chu i nội dung câu l nh SQL Câu l nh SQL có thể là câu l nh truy vấn hoặc cập nhật N u k t qu c a câu l nh à dòng ong C hì phương hức tr về giá trị

ue, ngược lại tr về giá trị f se T ong ường hợp giá trị true, s u đó h ng ó hể dùng phương hứ ge Resu e () để lấy các dòng k t qu tr về

 java.sql.ResultSet

Đ ượng resultset là các dòng dữ li u tr về c a câu l nh truy vấn CSDL L p này cung cấp phương hứ để rút trích các cột trong từng dòng k t qu tr về Tất c các phương hứ này đều có dạng:

type getType(int | String)

T ong đó h m s có thể là s thứ tự c a cột hoặc tên cột cần lấy nội dung

Tại 1 thờ đ ểm chúng ta chỉ có thể thao tác trên 1 dòng c esu se Để thao tác trên dòng ti p theo chúng ta s dụng phương hứ ne () Phương hức tr về giá trị true ong ường hợp có dòng ti p heo, ngược lại tr về giá trị false

6.6.2 Ví dụ truy vấn CSDL

public class Movie{

private String movieTitle, category, mediaFormat;

private int number;

public Movie(int n, String title, String cat, String format){

Trang 14

public String toString(){

return number + ": " + movieTitle + " - " + category + " " + mediaFormat;

}

}

Trang 15

256

import java.sql.*;

public class MovieDatabase{

private Connection connection;

private PreparedStatement findByNumber, updateCategory;

private CallableStatement findByCategory;

public MovieDatabase(Connection connection) throws SQLException{

this.connection = connection;

}

public void showAllMovies(){

try{

Statement selectAll = connection.createStatement();

String sql = "SELECT * FROM Movies";

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());

} results.close();

selectAll.close();

}catch(SQLException e){

e.printStackTrace();

} }

}

Trang 16

257

import java.sql.*;

public class ShowMovies{

public static void main(String [] args){

String url = "jdbc:odbc:" + args[0];

try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Connection connection =DriverManager.getConnection(url);

MovieDatabase db = new MovieDatabase(connection);

Statement addMovie = connection.createStatement();

ng sq = “IN ERT INTO Mo es VA UE (“ + mov e ge Num e () + “, “

+ “‘“ + mo e ge Mo eT e() + “‘, “ + “‘“ + mo e ge C ego y() +

“‘, “

Trang 17

}

import java.sql.*;

public class AddMovies{

public static void main(String [] args){

Connection connection = DriverManager.getConnection(url);

System ou p n n(“Conne o “ + onne on ge C og() + “

su ess!”);

MovieDatabase db = new MovieDatabase(connection);

Movie [] movies = new Movie[6];

mo es[0] = new Mo e(1, “ W s: A New Hope”,“ en e

F on”, “ V ”);

movies[1] = new Mo e(2, “C zen ne”, “ m ”, “VH ”);

mo es[2] = new Mo e(3, “The ung e ook”, “Ch d en”, “VH ”);

Trang 18

}

Trang 19

260

i ập

Để x được dữ li u từ mộ C , hương ình ph i thực hi n lần ượt theo các

ư c sau:

 Gọi hàm getConnection() để nhận đượ đ ượng c a l p Connection;

 Tạo ra mộ đ ượng c a l p Statement;

 Chuẩn bị mộ đ i ượng để x lý l nh c a SQL và truy vấn vào dữ li u theo yêu

cầu; Câu l nh SQL có thể thực hi n trực ti p hông qu đ ượng c a Statement hoặc có thể được biên dịch dị h hông qu đ ượng c a PreparedStatement hay gọi một th tụ để ưu ại thông qua CallableStatement

Khi hàm executeQuery() được thực hi n, thì k t qu được cho lạ à đ ượng c a l p ResualtSet bao gồm các dòng dữ li u và có thể s dụng hàm next() để định các dữ li u

theo yêu cầu

Câu 1 Tạo ơ sở dữ li u đơn g n trong MS Access và SQL Server 2000 bao gồm 2 b ng

như s u:

SanPham(MaSP, TenSP, NhaSanXuat, MaLoaiSP)

LoaiSanPham(MaLoaiSP, TenLoaiSP)

Câu 2 Vi hương ình ho phép h ển thị MaSP, TenSP và TenLoaiSP (trong

console và trong giao di n)

Câu 3 Cho phép nhập vào dữ li u vào b ng LoaiSP

Thư n dùng để k t n i vào SQL Server gồm các file: msbase.jar, mssqlserver.jar, msutil.jar

ưu ần kh o hư n ư c khi biên dịch

Câu 4 Thi t k CSDL và vi hương ình qu n í bán hàng hóa theo các mô t sau:

NHANVIEN: m i nhân viên có một mã nhân viên duy nhất, họ n, ngày h ng năm s nh, địa chỉ s đ n thoại và gi i tính

Trang 20

261

SANPHAM: m i một s n phẩm có một mã s n phẩm để phân bi t v i s n phẩm khác, một tên s n phẩm, đơn ị ính à g (đơn g > 0)

HOADON: m i một hóa đơn ó mộ mã hó đơn duy nhất, mã nhân viên lập hó đơn, loạ hó đơn (nhập, xuất, chuyển hay tr ), ngày lập hó đơn, ngày g o nhận, diễn gi i (ngày lập <= ngày hi n hành)

CHITIETHOADON: m i chi ti hó đơn ho t 1 s n phẩm được nhập, xuất, chuyển hay tr c a mộ hó đơn nào i s ượng, đơn g n

Câu 5 Vi hương ình ằng ngôn ngữ lập trình Java k t n i vào CSDL tạo trên Câu 6 Chương ình ho phép h o h m, ó , s a, xem dữ li u ở các b ng Câu 7 Thi t k form ở dạng master/detail hiển thị thông tin về hó đơn à h t

TenTG Tên tác gi Varchar

DCLienHe Địa chỉ liên h Varchar

TuKhoa Từ khóa mô t sách Varchar

Trang 21

NgayMuon Ngày mượn sách Datetime

NgayPhaiTra Ngày ph i sách Datetime

Hãy vi hương ình j :

Trang 22

263

Câu 9 S dụng cầu n i JDBC-ODBC k t n đ n CSDL nói trên bằng c hai cách:

s dụng DNS và File DNS

Câu 10 S dụng đ ượng emen để tạo ra các b ng trên

Câu 11 Chèn một s mẫu tin vào các b ng

Câu 12 Lấy về tất c các mẫu tin c a b ng sách và in ra màn hình

Câu 13 Vi hương ình ó g o d n đồ họa cho phép xem các mẫu tin c a b ng

GiaoVien(MaGV, HoTen, DiaChi, MaHV)

KetQua(MaSv, MaDT, Diem)

Trang 23

264

 DeTai: B ng ưu d nh s h đề tài

 KetQua: B ng ưu d nh k t qu b o v c đề tài

 G oV en: ưu d nh mục các giáo viên

 nhV en_ eT : ưu đề tài mà sinh viên thực hi n

 G oV en_ eT : ưu đề à mà s nh mà g o n hư ng dẫn

Một sinh viên có thể không tham gia hoặc tham gia nhiều đề tài

Một giáo viên có thể không hư ng dẫn hoặ hư ng dẫn nhiều đề tài

M i sinh viên b o v đề tài có một k t qu riêng bi t

M i giáo viên chỉ có một học vị

Hãy vi hương ình j hực hi n các yêu cầu sau:

Câu 16 S dụng ình điều khiển cho SQL Server c M osof để k t n i vào

Sql Server

Câu 17 S dụng đ ượng emen để tạo các b ng trên và các quan h giữa

chúng

Câu 18 Vi t một ứng dụng có giao di n đồ họa và s dụng đ ượng

P ep ed eme để nhập một s mẫu tin vào các b ng

Vi t các th tụ ưu ữ sau:

Trang 24

265

Câu 19 Vi t th tụ ưu ữ có tham s là xâu ký tự, th tục này sẽ tr về đề tài có

mã o ương ứng tham s c a th tụ đề à đó, hông n gồm: T n đề tài, tên

s nh n h m g , n g o n hư ng dẫn

Câu 20 Vi t th tụ ưu ữ có tham s là một s nguyên, th tục này sẽ tr về các

sinh viên có k t qu b o v đề tài nhỏ hơn g ị c a tham s c a th tục

Câu 21 Vi t th tụ ưu ữ có tham s là một xâu kí tự, th tục này sẽ tr về s

ượng đề à hư ng dẫn c a giáo viên có mã bằng tham s c a th tục

Câu 22 Vi t th tụ ưu ữ có tham s là một xâu kí tự, th tục này sẽ tr về s

ượng s nh n h m g đề tài có mã bằng tham s c a th tục

Câu 23 Hãy thêm cột XepLoai vào b ng KetQua và vi t th tụ ưu ữ để để cập

nhập x p loại cho cột x p loại theo công thức:

Diem<5: Y u

Diem>=5 và Diem<7 : Trung bình

Diem>=7 và Diem<8: Khá

Diem>8: Giỏi

Ngày đăng: 19/02/2016, 22:03

HÌNH ẢNH LIÊN QUAN

Bảng cha  Bảng con  Kiểu quan hệ - Lap Trinh java  bai giang chuong 6
Bảng cha Bảng con Kiểu quan hệ (Trang 23)

TỪ KHÓA LIÊN QUAN