CáckháiniệmmớicủaJDBC2.0 Đào Anh Tuấn – datuan@fit.hcmuns.edu.vn Scrollable ResultSet Với phiên bản 1.0, ResultSet chỉ có thể duyệt theo 1 chiều là forward Với phiên bản 2.0, ResultSet có thể duyệt cả chiều forward và backward. Sự thay đổi nằm ở câu lệnh createStatement: Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITI VE, ResultSet.CONCUR_READ_ONLY); ResultSet trả về bởi statement này sẽ có khả năng di chuyển theo 2 hướng: ResultSet srs = stmt.executeQuery("SELECT COF_NAME, PRICE FROM COFFEES"); createStatement createStatement(int resultSetType, int resultSetConcurrency) Type: TYPE_FORWARD_ONLY: chỉ duyệt chiều tiến tới TYPE_SCROLL_INSENSITIVE : duyệt 2 chiều, khi duyệt không chú ý đến sự thay đổi dữ liệu TYPE_SCROLL_SENSITIVE : duyệt 2 chiều, có phát hiện thay đổi dữ liệu. Concurrency: CONCUR_READ_ONLY : ResultSet chỉ đọc, muốn thay đổi dữ liệu phải dùng câu lệnh executeUpdate(); CONCUR_UPDATABLE : ResultSet có khả năng thay đổi dữ liệu Duyệt ResultSet next(): duyệt tiến, khi hết dòng sẽ trả về false previous(): duyệt lùi, khi hết dòng sẽ trả về false afterLast(),beforeFirst(): nhảy về sau dòng cuối cùng, trước dòng đầu tiên absolute(n): nhảy đến dòng thứ n, n là số dương: ví dụ +1, nhảy đến dòng đầu n là số âm: ví dụ -1, nhảy đến dòng kế cuối relative(n): nhảy lên (nếu n>0), hoặc nhảy lùi về (nếu n<0) n dòng. first(),last() getRow(): cho biết đang ở dòng bao nhiêu Update với ResultSet Jump đến dòng cần update, thực thi các câu lệnh updateXXX(). Ví dụ: Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet uprs = stmt.executeQuery("SELECT COF_NAME, PRICE FROM COFFEES"); uprs.last(); //Nhảy đến dòng cuối uprs.updateFloat("PRICE", 10.99); uprs.updateRow(); //Thực thi update Insert ResultSet có một dòng đặc biệt, gọi là Insert Row Jump đến insert row, sau đó thực thi các lệnh update uprs.moveToInsertRow(); uprs.updateString("COF_NAME", "Kona"); uprs.updateInt("SUP_ID", 150); uprs.updateFloat("PRICE", 10.99); uprs.updateInt("SALES", 0); uprs.updateInt("TOTAL", 0); uprs.insertRow(); //Thực thi insert Delete Di chuyển đến dòng cần delete: uprs.absolute(4); uprs.deleteRow(); Batch Update Thực hiện nhiều câu lệnh Update cùng lúc. con.setAutoCommit(false); Statement stmt = con.createStatement(); stmt.addBatch("INSERT INTO COFFEES" + "VALUES('Amaretto', 49, 9.99, 0, 0)"); stmt.addBatch("INSERT INTO COFFEES" + "VALUES('Hazelnut', 49, 9.99, 0, 0)"); stmt.addBatch("INSERT INTO COFFEES" + "VALUES('Amaretto_decaf', 49, 10.99, 0, 0)"); stmt.addBatch("INSERT INTO COFFEES" + "VALUES('Hazelnut_decaf', 49, 10.99, 0, 0)"); int [] updateCounts = stmt.executeBatch(); con.commit(); . Các khái niệm mới của JDBC 2. 0 Đào Anh Tuấn – datuan@fit.hcmuns.edu.vn Scrollable ResultSet Với phiên bản 1 .0, ResultSet chỉ có. "VALUES('Amaretto_decaf', 49, 10. 99, 0, 0) "); stmt.addBatch("INSERT INTO COFFEES" + "VALUES('Hazelnut_decaf', 49, 10. 99, 0, 0) "); int