Java Dataset JoinRowSet Phần 4

Chương 4:JoinRowSet

Một cài đặt JoinRowSet để tạo SQL JOIN giữa các Rowset khi không kết nối với dữ liệu nguồn . điều này hết sức quan trọng vì nó lưu toàn bộ những gì được tạo và nhiều connection :

• Create a JoinRowSet object – Tạo một JoinRowSet.

• Add RowSet objects to form an SQL JOIN – Thêm một RowSet từ một SQL JOIN.

• Manage match columns –quản lý dữ liệu.

Creating a JoinRowSet Object

Một JoinRowSet phục vụ cho giữ một SQL JOIN :

JoinRowSet jrs = new JoinRowSetImpl();

Jrs không giữ gì cả cho tới khi RowSet được add vào trong nó.

Adding RowSet Objects

Một RowSet có thể thêm vào một JoinRowSet miễn là nó là thành phần của SQL JOIN. Kể cả JdbcRowset là một connected tuy nhiên không ai sử dụng như thế. Mục đích chính là biến nó thành một JOIN relationship.

Xét scenario:

Người chủ của The Coffe có một danh sách café mua ở Acme, để làm điều đó cần nhận thông tin từ 2 bảng COFFEES và SUPPLIERS. Thế giới CSDL trước RowSet người lập trình gửi một truy vấn tới database:

String query = "SELECT COFFEES.COF_NAME FROM COFFEES, SUPPLIERS " +

"WHERE SUPPLIERS.SUP_NAME = Acme.Inc. and " +

"SUPPLIERS.SUP_ID = COFFEES.SUP_ID";

Trong thế giới RowSet bạn có thể có một kết quả tương tự mà không cần gửi dữ liệu tới dữ liệu nguồn, sử dụng JoinRowset để nhận dữ liệu mong muốn.

Đoạn mã này tạo ra 2 cachedRowset : coffees và suppliers . chúng cần kết nối tới database và thi hành commands để nhận dữ liệu, nhưng chỉ làm một lần duy nhất mà không cần kết nối lại JOIN.

CachedRowSet coffees = new CachedRowSetImpl();

coffees.setCommand("SELECT * FROM COFFEES");

coffees.setUsername(name);

coffees.setPassword(password);

coffees.setURL("jdbcDriverURL1");

coffees.execute();

CachedRowSet suppliers = new CachedRowSetImpl();

suppliers.setCommand("SELECT * FROM SUPPLIERS");

suppliers.setUsername(name);

suppliers.setPassword(password);

suppliers.setURL("jdbcDriverURL2");

suppliers.execute();

khi đó đương nhiên ta có 2 bảng với đầy dủ dữ liệu.

trong Rowset việc join 2 bảng yêu cầu các côt cơ sở gọi là : match column.

Có 2 cách thiết lập match column.

Cách đầu tiên là dùng match column đến JoinRowSet dùng phương thức addRowSet:

jrs.addRowSet(coffees, 2); //jrs -JoinRowset

đoạn mã trên thiết lập cột thứ 2 của coffees là match column, ngoài ra có thể dùng tên- column name thay cho column number:

jrs.addRowSet(coffees, "SUP_ID");

tại thời điểm này jrs chỉ chứa coffees thôi. Đoạn mã sau thêm tiếp suppliers là match column.

jrs.addRowSet(suppliers, 1);

bây giờ suppliers chứa một JOIN giữa coffees và suppliers mà owner có thể lấy ra tên của quán café từ vùng Acme.

Chúng ta không định nghĩa loại JOIN nên mặc định là INNER JOIN.

Đoạn mã sau in ra tên quán café ở Acme. Điều này hoàn toàn làm được trong JoinRowSet:

System.out.println("Coffees bought from Acme, Inc.: ");

while (jrs.next()) {

if (jrs.getString("SUP_NAME") = "Acme, Inc.") {

String name = jrs.getString("COF_NAME");

System.out.println(" " + name);

}

}

Và ta có kết quả :

Coffees bought from Acme, Inc.:

Colombian

Colombian_Decaf

Interface JoinRowSet cung cấp cố định một loại JOIN được định dạng. hiện tại là :

RowSet.INNER_JOIN.

Trên đây là những bài sơ lược về rowset dùng trong java, những công nghệ mới bây giờ như ibatis hay hibernate đã xóa bỏ cách dùng này, tuy nhiên tôi vẫn dùng nó trong những tao thác đơn giản như xuất báo cáo, xml. Có thể rowset sẽ chết trước dataset dù ra sau, vì nó không hoàn hảo như dataset và cộng đồng ít, tuy nhiên nó cũng đáng để xem qua đấy chứ.

About Langthang

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment
    Facebook Comment

0 comments :

Post a Comment