Statement interface cung cấp các method cho phép thực thi các câu truy vấn SQL xuống database và trả về kết quả thông qua ResultSet object.
Các method thường sử dụng trong Statement interface:
- public ResultSet executeQuery(String sql) – Sử dụng để thực thi các câu lệnh SELECT, trả về ResultSet.
- public int executeUpdate(String sql) – Trả về số hàng bị ảnh hưởng bởi việc thực thi câu lệnh SQL. Sử dụng hàm này để thực thi các câu lệnh INSERT, UPDATE hoặc DELETE.
- boolean execute(String SQL) – Trả về giá trị boolean; true câu lệnh SQL có thể trả về ResultSet, ngược lại false.
Điều kiện tiên quyết
Hầu hết các ứng dụng Java hiện đây đều sử dụng Maven hoặc Gradle cho phép chúng ta dễ dàng quản lý các dependency, build source code etc. Vì vậy trong bài viết này mình sẽ sử dụng project maven để hướng dẫn.
Sau khi tạo project maven thành công, chúng ta cần thêm JDBC dependency tương ứng với cơ sở dữ liệu bạn muốn, ở đây mình sử dụng mysql.
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.13</version> </dependency>
Tiếp theo, chúng ta sẽ cần tạo database dưới cơ sở dữ liệu MySQL theo lệnh sau
CREATE DATABASE `empl`; CREATE TABLE `EMPLOYEE` ( `ID` int NOT NULL AUTO_INCREMENT, `NAME` varchar(45) DEFAULT NULL, `SALARY` decimal(10,0) DEFAULT NULL, PRIMARY KEY (`ID`) )
Thêm dữ liệu vào bảng EMPLOYEE để tiện cho các ví dụ trong bài viết này
INSERT INTO `EMPLOYEE` (`ID`,`NAME`,`SALARY`) VALUES (5,'join',10); INSERT INTO `EMPLOYEE` (`ID`,`NAME`,`SALARY`) VALUES (6,'marry',20); INSERT INTO `EMPLOYEE` (`ID`,`NAME`,`SALARY`) VALUES (17,'deft',100); INSERT INTO `EMPLOYEE` (`ID`,`NAME`,`SALARY`) VALUES (18,'marrin',20);
JDBC Statement example
Trong phần này, chúng ta sẽ sử dụng cả 3 method thường dùng trong Statement để triển khai một ví dụ.
import java.math.BigDecimal; import java.sql.*; public class Main { private static final String DB_URL = "jdbc:mysql://localhost:3306/empl?serverTimezone=UTC&useSSL=false"; private static final String USER = "root"; private static final String PASS = "123456"; public static void main(String[] args) { Connection conn = null; Statement stmt = null; try { //STEP 2: dang kuy JDBC driver Class.forName("com.mysql.jdbc.Driver"); //STEP 3: Open a connection System.out.println("Connecting to database..."); conn = DriverManager.getConnection(DB_URL, USER, PASS); //STEP 4: Execute a query System.out.println("Creating statement..."); stmt = conn.createStatement(); String sql = "UPDATE EMPLOYEE SET NAME = 'DEFT' WHERE ID=5"; // Kiem tra cau lenh co the tra ve ResultSet hay khong? Boolean ret = stmt.execute(sql); System.out.println("Return value is : " + ret.toString()); // Cap nhap Employee co id = 1 int rows = stmt.executeUpdate(sql); System.out.println("Rows impacted : " + rows); // Select tat ca nhan vien sql = "SELECT ID, NAME, SALARY FROM EMPLOYEE"; ResultSet rs = stmt.executeQuery(sql); //STEP 5: Hien thi du lieu while (rs.next()) { //Retrieve by column name int id = rs.getInt("ID"); String name = rs.getString("NAME"); BigDecimal salary = rs.getBigDecimal("SALARY"); //Display values System.out.println("ID: " + id); System.out.println("NAME: " + name); System.out.println("SALARY: " + salary); System.out.println("---------------------------------------------"); } // dong ket noi rs.close(); stmt.close(); conn.close(); } catch (SQLException se) { //Handle errors for JDBC se.printStackTrace(); } catch (Exception e) { //Handle errors for Class.forName e.printStackTrace(); } finally { //finally block used to close resources try { if (stmt != null) stmt.close(); } catch (SQLException se2) { }// nothing we can do try { if (conn != null) conn.close(); } catch (SQLException se) { se.printStackTrace(); } } } }
Output
Connecting to database... Creating statement... Return value is : false Rows impacted : 1 ID: 5 NAME: DEFT SALARY: 10 --------------------------------------------- ID: 6 NAME: marry SALARY: 20 --------------------------------------------- ID: 17 NAME: deft SALARY: 100 --------------------------------------------- ID: 18 NAME: marrin SALARY: 20 ---------------------------------------------
Nguồn
https://www.tutorialspoint.com/jdbc/statement-object-example.htm
https://www.javatpoint.com/Statement-interface