Java Dataset JDBC rowset Phần 2

(Phần trước sao không thấy ai ủng hộ chi hết trơn, cho ý kiến đi chớ)

Phần này mình giới thiệu về JDBCRowSet, đây là một đối tượng bắt đầu có những tính năng của một RowSet-dạng đơn giản nhất. Hình như trong .NET nó là dataReader hay sao đó???.

(Mong phản hồi từ các bạn)

Một Rowset về cơ bản là một đối tượng Resultset được tăng cường, nó duy trì một kết nối đến dữ liệu nguồn như 1 đối tượng Resultset đã làm. Điều khác biệt lớn là nó có một tập các thuộc tính và cơ chế khai báo Listerner của một JavaBean, chương này sẽ đề cập đến thuộc tính và chương Cached Rowset sẽ đề cập đến cơ chế khai báo listerner trong phần “Notifying Listerner”

Một vấn đề chính là JdbcRowset có khả năng scroll và update dữ liệu ngay cả khi nó-CSDL không có khả năng làm điều đó

Chương này:

  • Tạo một đối tượng Rowset
  • Set properties
  • Di chuyển con trỏ giữa các dòng khác nhau.
  • Update dữ liệu.
  • Thêm một dòng mới
  • Xóa dữ liệu.

Tạo một đối tượng JdbcRowset:

2 cách:

Tham khảo đến một constructor mà lấy về một đối tượng Resultset.

Tham khảo bởi một cài đặt constructor mặc định.

Thông qua một Resultset:

Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery(select * from COFFEES);

JdbcRowSet jdbcRs = new JdbcRowSetImpl(rs);

Vậy có gì mới.

Với resultset thì không thể updatable và không cuộn data được- chỉ chạy lần lượt, còn JdbcRowset thì khác.( chỗ này tuệ có kiểm tra, dù tài liệu nó nói dậy nhưng không hẳn thế đâu, muốn có đầy đủ chức năng thì cứ SET vào, để default nó “lung tung” đó)

Trường hợp này rowset được xem là wrapping của resultset.

typeResultSet.TYPE_SCROLL_INSENSITIVE (has a scrollable cursor)

concurrencyResultSet.CONCUR_UPDATABLE (can be updated)

escapeProcessingtrue (the driver will do escape processing)

maxRows0 (no limit on the number of rows)

maxFieldSize0 (no limit on the number of bytes for a column value;

applies only to columns that store BINARY, VARBINARY, LONGVARBINARY,

CHAR, VARCHAR, and LONGVARCHAR values)

queryTimeout0 (has no time limit for how long it takes to execute a query)

showDeletedfalse (deleted rows are not visible)

transactionIsolationConnection.TRANSACTION_READ_COMMITTED (reads

only data that has been committed)

typeMapnull (the type map associated with a Connection object used by this

RowSet object is null)

Using the Default Constructor

JdbcRowSet jdbcRs2 = new JdbcRowSetImpl();

Khi này rowset không có data nó cần một resultset cho nó dữ liệu có nghĩa nó cần một kết nối và một truy vấn .

Đòi hỏi phải thiết lập một thuộc tính cho nhận connection.

Thiết lập query để thi hành.

Setting Properties

Để có thể nhận dữ liệu, một jdbcRowSet cần một kết nối đến database, 4 thuộc tính sau giữ các thông tin được sử dụng để quản lý và duy trì các kết nối đến database.

  • Username – username hỗ trợ cho việc đăng nhập.
  • Password – mật mã của user.
  • url –JDBC URL đến database mà user muốn kết nối.
  • datasourceName – tên được sử dụng để truy vấn đối tượng datasource được đăng ký với một JNDI.

Như đã đề cập trong chương tổng quan, các thuộc tính được thiết lập phụ thuộc vào cách bạn dự định kết nối. cách ưa thích hơn là dùng datasource với việc đăng ký một dịch vụ JNDI, cái mà sẽ thường được làm về sau này. Ở đây tôi sử dụng URL trong các ví dụ nhằm làm cho mọi việc đơn giản.

Và đây là giá trị thuộc tính được thiết lập hỗ trợ cho việc kết nối:

Với JDBCRowSet jdbcRs.

jdbcRs.setUsername("hardy");

jdbcRs.setPassword("oursecret");

jdbcRs.setUrl("jdbc:mySubprotocol:mySubname"); - Nói thêm, có thể dùng các driver riêng của oracle hoặc sqlserver cho jdbc.

Công việc kế tiếp là insert, update, delete các dòng trên database thông qua đối tượng này, tuy nhiên tôi sẽ không tiếp tục, vì luôn có sự tương tự khi sử dụng các đối tượng rowset về sau này. Với jdbcRowSet nó không khác một ResultSet là mấy.

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

3 comments :

  1. hjhj, THank bạn cái nha, mình đang học đến mấy cái này, tài liệu toàn tiếng anh ngồi đọc mà hiểu đc chắc cũng chết mất

    ReplyDelete
  2. hay lam ban tiep tuc post bai tiep nha .thanks

    ReplyDelete
  3. Thanks rất nhìu bài viết bổ ích

    ReplyDelete