STACKJAVA

Hướng dẫn Java JDBC, Ví dụ với PreparedStatement trong JDBC

Hướng dẫn Java JDBC, Ví dụ với PreparedStatement trong JDBC.

 

PreparedStatement

Ví dụ với PreparedStatement trong JDBC.

Tạo cơ sở dữ liệu demo-jdbc như hình dưới:

CREATE SCHEMA `demo-jdbc` ;

(Xem lại: Cài đặt và cấu hình MySQL)

Bây giờ mình sẽ viết 1 chương trình Java kết nối tới database demo-jdbc

Để kết nối với MySQL bằng Java chúng ta cần download jdbc tương ứng cho MySQL

Các bạn có thể download thư viện jdbc cho MySQL tại đây mysql-connector-java-6.0.6.jar

Hoặc sử dụng maven:

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>6.0.6</version>
</dependency>

Ở đây mình dùng maven (nếu bạn nào chưa biết maven thì nên tìm hiểu luôn vì nó được dùng nhiều và khá quan trọng khi đi làm)

Tạo table user_info

package stackjava.com.demojdbc.preparedstatement;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class CreateTable {
  public static void main(String[] args) throws SQLException, ClassNotFoundException {
    Class.forName("com.mysql.cj.jdbc.Driver");
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo-jdbc", "root", "admin1234");
    String sql = "CREATE TABLE user_info (" +
        "  id int(11) NOT NULL AUTO_INCREMENT," +
        "  name varchar(45) DEFAULT NULL," +
        "  address varchar(255) DEFAULT NULL," +
        "  PRIMARY KEY (id)" +
        ")";
    PreparedStatement pstmt = con.prepareStatement(sql);
    pstmt.execute();
    con.close();
    System.out.println("Created!");
  }
}

 

Thêm 2 bản ghi vào table user_inf (id tự tăng nên chúng ta không cần thêm nó vào câu lệnh INSERT)

Bạn có thể lấy, với PreparedStatement ta chỉ cần viết 1 câu SQL và truyền tham số cho nó 2 lần để tạo 2 bản ghi chứ không cần viết 2 câu SQL giống như Statement

package stackjava.com.demojdbc.preparedstatement;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import stackjava.com.demojdbc.entities.User;

public class InsertRow {
  public static void main(String[] args) throws SQLException, ClassNotFoundException {
    Class.forName("com.mysql.jdbc.Driver");
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo-jdbc", "root", "admin1234");
    
    String sql = "INSERT INTO user_info (name, address) VALUES (?, ?);";
    List<User> listUser = new ArrayList<User>();
    listUser.add(new User("Harry", "England"));
    listUser.add(new User("Batman", "USA"));

    PreparedStatement pstmt = con.prepareStatement(sql);
    for (User user : listUser) {
      pstmt.setString(1, user.getName());
      pstmt.setString(2, user.getAddress());
      pstmt.execute();
    }
    con.close();
    System.out.println("Inserted!");
  }
}

Update bản ghi (row) có address = “England” thành “VietNam”

package stackjava.com.demojdbc.preparedstatement;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class UpdateRow {
  public static void main(String[] args) throws SQLException, ClassNotFoundException {
    Class.forName("com.mysql.cj.jdbc.Driver");
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo-jdbc", "root", "admin1234");
    
    String sql = "UPDATE user_info SET address = 'VietNam' WHERE address = 'England';";
    PreparedStatement pstmt = con.prepareStatement(sql);
    pstmt.executeUpdate();
    con.close();
    System.out.println("Updated!");
  }
}

Xóa bản ghi có address = “USA”

package stackjava.com.demojdbc.preparedstatement;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class DeleteRow {
  public static void main(String[] args) throws SQLException, ClassNotFoundException {
    Class.forName("com.mysql.cj.jdbc.Driver");
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo-jdbc", "root", "admin1234");
    String sql = "DELETE FROM user_info WHERE address = 'USA';";
    PreparedStatement pstmt = con.prepareStatement(sql);
    pstmt.executeUpdate();
    con.close();
    System.out.println("DELETED!");
  }
}

Câu lệnh select tất cả các bản ghi trong table user_info:

package stackjava.com.demojdbc.preparedstatement;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class SelectRow {
  public static void main(String[] args) throws SQLException, ClassNotFoundException {
    Class.forName("com.mysql.cj.jdbc.Driver");
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo-jdbc", "root", "admin1234");
    String sql = "SELECT * FROM user_info;";
    
    PreparedStatement pstmt = con.prepareStatement(sql);
    ResultSet rs = pstmt.executeQuery();
    while (rs.next())
      System.out.println(rs.getInt(1) + "  " + rs.getString(2) + "  " + rs.getString(3));
    
    con.close();
    System.out.println("Done!");
  }
}

Kết quả:

Hướng dẫn Java JDBC, Ví dụ với PreparedStatement trong JDBC

Tương tự với Statement, cách dùng các method execute của PreparedStatement như sau:

 

Okay, Done!

Xem thêm:

Truy vấn database với jdbc – StatementStatement

Truy vấn database với jdbc – CallableStatement

Download code ví dụ trên tại đây