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

Lập trình kết nối CSDL từ Java vào MySQL docx

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 (304.47 KB, 5 trang )

Lập trình kết nối CSDL từ Java vào MySQL
Bài viết này hướng dẫn về cách lập trình kết nối từ Java vào Cơ sở dữ liệu MySQL được
demo trên môi trường phát triển NetBeans

Giả sử tôi có hai bảng sau:
- Bảng "Viec" gồm các trường : MS, Noi dung (Ms là khoá chính). Hiện tại bảng "Viec" có 2
record sau:
MS Noi dung
1 ABC
2 DEC
- Bảng "Nguoi" gồm các trường: MS_nguoi, MS_vuviec, ho, ten, nam sinh (MS_nguoi là khóa
chính, MS_vuviec là khóa ngoại).
Quan hệ: Main kết nối One-Many với bảng "Nguoi" qua khóa ngoại nguoi.MS_vuviec =
Viec.MS (tức là trong 1 việc có thể có nhiều người tham gia, một người chỉ tham gia 1 việc).
Hiện tại bảng "Nguoi" có 5 record sau:

Tôi dùng lệnh SQL
SELECT DISTINCT viec.*, Nguoi.*
FROM viec INNER JOIN Nguoi ON viec.MS = Nguoi.MS_Viec;
thì được kết quả sau:
Bây giờ tôi muốn chỉ xuất ra như sau
MS Noi dung MS_nguoi MS_Viec Ho Ten Nam sinh
1 ABC 1 1 A B 1925
2 DEC 3 2 E F 1981
Tức là giá trị field MS chỉ xuất ra 1 lần không lặp lại như kết quả trên.
Bài viết sẽ trình diễn (demo) chi tiết về lập trình Java giải quyết yêu cầu trên bằng một chương
trình java đơn giản dùng môi trường NetBeans (phân phối free bởi hãng SUN).
Nếu lập trình truy xuất database bằng ngôn ngữ Java, bạn có thể dùng các đối tượng trong
package java.sql như Connection, Statement, ResultSet, ResultSetMetaData, Ngoài ra, để truy
xuất được database do MySQL server quản lý, bạn cần có JDBC driver tương ứng. Có nhiều
JDBC driver có thể truy xuất được database của MySQL server, trong đó "MySQL


Connector/J" là driver cho chính hãng SUN phân phối dạng "free-ware". Bạn có thể download
driver này ở địa chỉ này, bung nó từ dạng nén thành dạng rõ, copy file "mysql-connector-java-
5.1.13-bin.jar" sang thư mục xác định để chuẩn bị dùng nó lâu dài trong các ứng dụng Java mà
bạn sắp viết.
Lệnh truy vấn SQL có tên là SELECT được dùng chủ yếu mỗi khi ta cần truy vấn và rút trích
thông tin trên database theo một yêu cầu nào đó. Mặc dù lệnh SQL khá gần gũi với suy nghĩ bình
thường của con người, nhưng vì nó có rất nhiều tham số (hoặc bắt buộc hoặc nhiệm ý) nên để
nắm vững đầy đủ mọi khả năng của lệnh này, bạn cần nhiều thời gian thực hành sử dụng nó. Thí
dụ câu lệnh mà bạn viết:
"SELECT DISTINCT viec.*, Nguoi.* FROM viec INNER JOIN Nguoi ON viec.MS =
Nguoi.MS_vuviec;"
sẽ mở rộng field MS_vuviec (khóa ngoại) của tất cả record trong bảng Nguoi thành các field đầy
đủ của record có field MS (khóa chính tương ứng) trong bảng Viec. Kết quả là bạn có 5 record =
5 record trong bảng Nguoi, nhưng thông tin đầy đủ hơn. Lưu ý từ khóa DISTINCT trong lệnh
SELECT là giữ lại kết quả các record hoàn toàn khác nhau, nếu có nhiều record giống nhau thì
chỉ giữ lại một. Tuy nhiên 2 record được gọi là giống nhau nếu chúng có tất cả các field giống
nhau (chứ không phải chỉ có 1 field khóa ngoại giống nhau như bạn nghĩ).

Nếu muốn kết quả chứa các record mà field MS không được lặp lại (hay 1 kết quả nào đó đặc thù
riêng của bạn), bạn cần viết đoạn code Java thực hiện điều này. Để demo chi tiết về lập trình
Java giải quyết yêu cầu của bạn, chúng tôi đã thử viết 1 chương trình java đơn giản bằng môi
trường NetBeans (phân phối free bởi hãng SUN) theo qui trình điển hình như sau:
1. Download JDK và môi trường NetBeans từ Internet và cài đặt vào máy.
2. Download MySQL server từ Internet và cài đặt vào máy, cấu hình thông số làm việc cho nó.
Dùng tiện ích "MySQL Query Browser" kèm theo MySQL Server để tạo mới database có tên là
test, trong database test tạo mới 2 bảng Viec và Nguoi, thêm các record dữ liệu vào từng bảng
theo sự miêu tả của bạn.
3. Chạy NetBeans, nếu thấy NetBeans hiển thị Project nào đó (của lần cuối cùng trước đó), ấn
phải chuột trên phần tử gốc của cây Project để hiển thị menu các chức năng rồi chọn option
Close để đóng Project tương ứng lại.

4. Tạo Project mới bằng cách vào menu File.New Project. Khi cửa sổ New Project hiển thị, chọn
mục Java trong listbox "Categories", chọn mục "Java Application" trong listbox "Projects" rồi ấn
button Next để hiển thị cửa sổ Wizard kế tiếp.
5. Dùng button Browse để duyệt và xác định thư mục chứa Project, nhập tên Project vào mục
"Project name" (thí dụ tên là NBMySQL), rồi ấn button Finish để hoàn tất qui trình đặc tả các
thông số cấu hình Project. Cửa sổ hiển thị mã nguồn class Main miêu tả ứng dụng đã được tạo ra
và đang được hiển thị, hãy viết thân của tác vụ main miêu tả ứng dụng như sau:
//chương trình Java đơn giản demo việc rút trích dữ liệu trong database
public static void main(String[] args) {
//định nghĩa các biến cần dùng
Connection con;
Statement stmt = null;
ResultSet rs = null;
ResultSetMetaData rsmd = null;
Object ms;
int fi, i;
//xây dựng chuỗi ConnectionString truy xuất database
String conStr = "jdbc:mysql://hiepcomp/test";
//lệnh truy vấn
String newSQL = "SELECT DISTINCT viec.*, Nguoi.* FROM viec INNER JOIN Nguoi ON
viec.MS = Nguoi.MS_Vuviec order by viec.MS";
try {
//kết nối database
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection(conStr, "root", "luonghoa");
//thực thi lệnh truy vấn, kết quả chứa trong rs
stmt = con.createStatement();
rs = stmt.executeQuery(newSQL);
rsmd = rs.getMetaData();
//xác định số field dữ liệu

int colnum = rsmd.getColumnCount();
//nếu có dữ liệu thì xuất hàng tiêu đề kết quả
if (rs != null && rs.next()) {
//xuất hàng tiêu đề
for (fi = 1; fi <= colnum;fi++)
System.out.print(rsmd.getColumnName(fi)+ "\t");
System.out.println();
//xuất hàng dữ liệu đầu tiên
for (fi = 1; fi <= colnum;fi++)
System.out.print(rs.getObject(fi)+ "\t");
System.out.println();
//lặp xuất từng hàng kết quả còn lại
while (rs.next()) {
//xuất 1 hàng dữ liệu
for (fi = 1; fi <= colnum;fi++)
System.out.print(rs.getObject(fi)+ "\t");
System.out.println("");
}
}
} catch (Exception e) {
System.out.println("Error : " + e);
}
//đóng các đối tượng đã dùng lại
finally {
if (rs != null) {
try { rs.close(); }
catch (Exception _ex) {System.out.println("Exception: " + _ex);}
}
if (stmt != null) {
try { stmt.close(); }

catch (Exception _ex) {System.out.println("Exception: " + _ex);}
}
}
}
6. Chọn menu Tools.Library để hiển thị cửa sổ Library Manager,
chọn button New Library để tạo mới 1 thư viện cần dùng cho ứng
dụng, chọn button Add JAR/Folder rồi duyệt tìm và chọn file thư
viện miêu tả driver "MySQL Connector/J" được dùng trong ứng
dụng.
7. Chọn menu Run.Run MainProject để dịch và chạy ứng dụng,
nếu bạn thực hiện đúng tất cả các bước trên thì chương trình sẽ
chạy và hiển thị 5 record trong bảng Nguoi giống y như bạn miêu
tả.
8. Nếu muốn lọc bỏ các record có field MS trùng nhau, chỉ giữ lại
1 record, bạn hãy hiệu chỉnh đoạn code chức lệnh while (rs.next())
in đậm ở trên thành đoạn code sau:
ms = rs.getObject("MS");
while (rs.next()) {
//nếu tìm thấy record có field MS mới
if (rs.getObject("MS") != ms) {
ms = rs.getObject("MS");
for (fi = 1; fi <= colnum;fi++)
System.out.print(rs.getObject(fi)+ "\t");
System.out.println("");
}
}
9. Chọn menu Run.Run MainProject để dịch và chạy lại ứng dụng, chương trình sẽ chạy và hiển
thị 2 record trong bảng Nguoi đúng theo yêu cầu của bạn

FPT APTECH mở ra cho

các bạn đam mê học tin
học, học công nghệ thông
tin chuyên sâu về học lập
trình cơ hội được đào tạo
Công Nghệ Thông Tin
trong môi trường tiêu
chuẩn chất lượng quốc tế
ISO9001.
Học CNTT - Học Aptech -
Học tại FPT

×