Hướng dẫn Java JDBC, Ví dụ với Statement trong JDBC.
Statement
- Statement là một trong ba loại interace thực thi câu lệnh truy vấn SQL trong JDBC API
- Statement có hiệu năng thấp nhất trong 3 loại interface truy vấn SQL của JDBC
- Statement thường được sử dụng để thực hiện các câu truy vấn SQL tĩnh, dùng một lần, các câu SQL DDL (Data Denifition Lanaguge) như tạo, sửa, xóa table.
Ví dụ với Statement 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
- Tạo 1 table ‘user_info’ với 3 column (id, name, address) trong đó id kiểu int là primary key và tự tăng; name và address kiểu varchar
- Thêm, sửa, xóa, truy vấn với table ‘user_info’ đã tạo ở trên.
Để 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.statement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class CreateTable { 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"); Statement stmt = con.createStatement(); 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)" + ")"; stmt.execute(sql); 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)
package stackjava.com.demojdbc.statement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class InsertRow { 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"); Statement stmt = con.createStatement(); String sql1 = "INSERT INTO user_info (name, address) VALUES ('Harry', 'England');"; String sql2 = "INSERT INTO user_info (name, address) VALUES ('Batman', 'USA');"; stmt.executeUpdate(sql1); stmt.executeUpdate(sql2); con.close(); System.out.println("Inserted!"); } }
Update bản ghi (row) có address = “England” thành “VietNam”
package stackjava.com.demojdbc.statement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; 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"); Statement stmt = con.createStatement(); String sql = "UPDATE user_info SET address = 'VietNam' WHERE address = 'England';"; stmt.executeUpdate(sql); con.close(); System.out.println("Updated!"); } }
Xóa bản ghi có address = “USA”
package stackjava.com.demojdbc.statement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; 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"); Statement stmt = con.createStatement(); String sql = "DELETE FROM user_info WHERE address = 'USA';"; stmt.executeUpdate(sql); 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.statement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; 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"); Statement stmt = con.createStatement(); String sql = "SELECT * FROM user_info;"; ResultSet rs = stmt.executeQuery(sql); 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 Statement trong JDBC
Lưu ý: với statement có khá nhiều method execute:
Trong đó execute, executeQuery, executeUpdate là ta hay dùng nhất
execute:dùng cho câu sql DDL (tạo, xóa, sửa bảng)
executeUpdate: dùng cho câu sql INSERT, UPDATE, DELETE
executeQuery: dùng câu sql SELECT
Okay, Done!
Xem thêm:
Truy vấn database với jdbc – PreparedStatement
Truy vấn database với jdbc – CallableStatement
Download code ví dụ trên tại đây