http://vietjack.com/java_jdbc/index.jsp Copyright © vietjack.com Statement Interface JDBC Tiếp theo tìm hiểu Statement Interface JDBC Interface cung cấp nhiều phương thức để thực thi truy vấn với sở liệu trả kết mà tạo Theo mặc định, thời điểm có đối tượng ResultSet mở cho đối tượng Statement Vì thế, hoạt động đọc đối tượng ResultSet bị chen ngang hoạt động đọc đối tượng khác, đối tượng khác phải tạo đối tượng Statement khác Tạo đối tượng Statement Để tạo đối tượng Statement, bạn sử dụng phương thức createStatement() đối tượng Connection, sau: Statement stmt = null; try { stmt = conn.createStatement( ); catch (SQLException e) { } finally { } } Sau tạo đối tượng Statement, bạn sử dụng nhiều phương thức đối tượng để thực thi lệnh SQL Dưới số phương thức sử dụng phổ biến Statement Interface public ResultSet executeQuery(String sql) Thực thi lệnh SQL cho trả đối tượng Resultset đơn Tham số sql lệnh SQL Phương thức gọi đối tượng PreparedStatement CallableStatement public int executeUpdate(String sql) Thực thi lệnh SQL cho, INSERT, UPDATE, DELETE lệnh SQL mà khơng trả lệnh SQL DDL Phương thức gọi đối tượng PreparedStatement CallableStatement public boolean execute(String sql) http://vietjack.com/ Trang chia sẻ các bài học online miễn phí http://vietjack.com/java_jdbc/index.jsp Copyright © vietjack.com Thực thi lệnh SQL cho mà trả nhiều kết Thường bạn bỏ qua phương thức này, trừ bạn thực thi store procedure mà bạn biết trả nhiều kết bạn thực thi chuỗi SQL mà bạn chưa biết Phương thức gọi đối tượng PreparedStatement CallableStatement public int[] executeBatch() Được sử dụng để thực thi nhóm lệnh thành cơng trả mảng Các phần tử mảng trả xếp theo thứ tự tương ứng với lệnh batch Các phần tử mảng trả là: • Một số >= 0, lệnh thực thi thành cơng số hàng bị tác động sở liệu • Một giá trị SUCCESS_NO_INFO lệnh thực thi thành công số hàng bị tác động chưa biết • Một giá trị EXECUTE_FAILED lệnh thất bại void close() throws SQLException Đóng đối tượng Statement giải phóng resource Khi đóng đối tượng Statement rồi, lời gọi phương thức tới đối tượng khơng hoạt động Khi đối tượng Statement bị đóng đối tượng ResultSet bị đóng Đóng đối tượng Statement Lý tương tự bạn đóng đối tượng Connection để giải phóng resource, sau thực xong hoạt động với Statement Interface bạn nên đóng đối tượng Statement lại Việc thực đơn giản phương thức close() Điều tất nhiên bạn đóng đối tượng Connection đối tượng Statement bị đóng (theo ngầm định) Tuy nhiên, việc đóng tường minh đối tượng Statement bước thực hành tốt để đảm bảo chắn đối tượng đóng resource giải phóng Dưới mẫu chung: http://vietjack.com/ Trang chia sẻ các bài học online miễn phí http://vietjack.com/java_jdbc/index.jsp Copyright © vietjack.com Statement stmt = null; try { stmt = conn.createStatement( ); catch (SQLException e) { } finally { stmt.close(); } } Ví dụ minh họa đối tượng Statement JDBC package com.vietjack.jdbc; //Buoc 1: Ban can inport cac package can thiet import java.sql.*; public class ViDuJDBC { // Ten cua driver va dia chi URL cua co so du lieu static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost/sinhvien"; // Ten nguoi dung va mat khau cua co so du lieu static final String USER = "root"; static final String PASS = "123456"; public static void main(String[] args) { Connection conn = null; Statement stmt = null; try{ // Buoc 2: Dang ky Driver Class.forName("com.mysql.jdbc.Driver"); // Buoc 3: Mo mot ket noi System.out.println("Dang ket noi toi co so du lieu "); conn = DriverManager.getConnection(DB_URL,USER,PASS); // Buoc 4: Thuc thi truy van System.out.println("Tao cac lenh truy van SQL "); stmt = conn.createStatement(); String sql = "UPDATE sinhvienk60 SET diemthi=10 WHERE mssv=3"; // Chung ta kiem tra xem no co tra ve mot true Result Set hay khong Boolean ret = stmt.execute(sql); System.out.println("\nGia tri tra ve la : " + ret.toString() ); // Chung ta cap nhat diem thi cua ban ghi co mssv = 3; int rows = stmt.executeUpdate(sql); System.out.println("So hang bi tac dong : " + rows ); // Lua chon tat ca ban ghi va hien thi sql = "SELECT mssv, ho, ten, diemthi FROM sinhvienk60"; ResultSet rs = stmt.executeQuery(sql); // Buoc 5: Lay du lieu tu Result Set while(rs.next()){ // Lay du lieu boi su dung ten cot int mssv = rs.getInt("mssv"); int diemthi = rs.getInt("diemthi"); String ho = rs.getString("ho"); String ten = rs.getString("ten"); // Hien thi cac gia tri System.out.print("\nMSSV: " + mssv); System.out.print("\nHo: " + ho); System.out.println("\nTen: " + ten); System.out.print("\nDiem Thi: " + diemthi); System.out.print("\n================="); } // Buoc 6: Don sach moi truong va giai phong resource rs.close(); stmt.close(); conn.close(); }catch(SQLException se){ // Xu ly cac loi cho JDBC se.printStackTrace(); }catch(Exception e){ // Xu ly cac loi cho Class.forName e.printStackTrace(); }finally{ // Khoi finally duoc su dung de dong cac resource try{ if(stmt!=null) stmt.close(); }catch(SQLException se2){ } try{ if(conn!=null) conn.close(); }catch(SQLException se){ se.printStackTrace(); }// Ket thuc khoi finally }// Ket thuc khoi try System.out.println("\nVietJack chuc cac ban hoc tot!"); }// Ket thuc main }// Ket thuc ViDuJDBC Sao chép dán ví dụ ViDuJDBC.java, sau biên dịch chạy chương trình Java cho kết sau: http://vietjack.com/ Trang chia sẻ các bài học online miễn phí ... tượng Statement giải phóng resource Khi đóng đối tượng Statement rồi, lời gọi phương thức tới đối tượng khơng hoạt động Khi đối tượng Statement bị đóng đối tượng ResultSet bị đóng Đóng đối tượng Statement. .. thực xong hoạt động với Statement Interface bạn nên đóng đối tượng Statement lại Việc thực đơn giản phương thức close() Điều tất nhiên bạn đóng đối tượng Connection đối tượng Statement bị đóng (theo... null; try { stmt = conn.createStatement( ); catch (SQLException e) { } finally { stmt.close(); } } Ví dụ minh họa đối tượng Statement JDBC package com.vietjack .jdbc; //Buoc 1: Ban can inport