Tags:

Cách sử dụng Statement interface trong JDBC

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

 

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x