Giao diện PreparedStatement trong java là một sub-interface của Statement. Nó được sử dụng để thực hiện truy vấn tham số.
String sql = "INSERT INTO student VALUES(?, ?, ?)";
Như bạn thấy, chúng ta truyền tham số (?) cho các giá trị. Giá trị của nó sẽ được cài đặt bằng cách gọi các phương thức setter của PreparedStatement.
Nội dung chính
Tại sao sử dụng PreparedStatement?
Cải thiện hiệu suất : Hiệu suất của ứng dụng sẽ nhanh hơn nếu bạn sử dụng giao diện PreparedStatement vì truy vấn được biên dịch chỉ một lần.
Làm thế nào để có được đối tượng PreparedStatement.
Phương thức prepareStatement() của giao diện Connection được sử dụng để trả về đối tượng PreparedStatement. Cú pháp:
public PreparedStatement prepareStatement(String query)throws SQLException;
Các phương thức của PreparedStatement interface
Dưới đây là các phương thức quan trọng của PreparedStatement interface trong java:
Phương thức | Mô tả |
---|---|
public void setInt(int paramIndex, int value) | đặt giá trị số nguyên cho chỉ số tham số đã cho. |
public void setString(int paramIndex, String value) | đặt giá trị String cho chỉ số tham số đã cho. |
public void setFloat(int paramIndex, float value) | đặt giá trị float vào chỉ số tham số đã cho. |
public void setDouble(int paramIndex, double value) | đặt giá trị double vào chỉ số tham số đã cho. |
public int executeUpdate() | thực hiện truy vấn. Nó được sử dụng để create, drop, insert, update, delete, vv. |
public ResultSet executeQuery() | thực hiện truy vấn chọn. Nó trả về một thể hiện của ResultSet. |
Ví dụ về PreparedStatement trong java
Tạo bảng ‘student’ trong cơ sở dữ liệu có tên ‘testdb’ trong MySQL với câu lệnh như sau:
CREATE TABLE student ( id INT NOT NULL, name VARCHAR (32) NOT NULL, address VARCHAR (32) NOT NULL, PRIMARY KEY (id) );
Tạo chương trình insert và select student:
package vn.viettuts.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class PreparedStatementExample { private static String DB_URL = "jdbc:mysql://localhost:3306/testdb"; private static String USER_NAME = "root"; private static String PASSWORD = "1234567890"; public static void main(String[] args) { String sqlInsert = "INSERT INTO student VALUES(?, ?, ?)"; String selectAll = "SELECT * FROM student"; try { // connect to database Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection(DB_URL, USER_NAME, PASSWORD); // crate statement to insert student PreparedStatement stmt = conn.prepareStatement(sqlInsert); stmt.setInt(1, 1); stmt.setString(2, "Vinh"); stmt.setString(3, "Hanoi"); stmt.execute(); // select all student stmt = conn.prepareStatement(selectAll); // get data from table 'student' ResultSet rs = stmt.executeQuery(); // show data while (rs.next()) { System.out.println(rs.getInt(1) + " " + rs.getString(2) + " " + rs.getString(3)); } stmt.close(); conn.close(); } catch (SQLException ex) { ex.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }
Kết quả:
1 Vinh Hanoi