Interface Statement đại diện cho câu lệnh SQL tĩnh, được sử dụng để tạo và thực thi các câu lệnh SQL chung thông qua chương trình Java.
Tạo đối tượng Statement
Bạn có thể tạo đối tượng của interface này bằng phương thức createStatement() của interface Connection. Tạo statement bằng cách gọi phương thức này như sau:
Statement stmt = null;
try {
stmt = conn.createStatement();
// ...
} catch (SQLException e) {
// ...
} finally {
// ...
}
Thực thi đối tượng Statement
Sau khi tạo đối tượng statement, bạn có thể thực thi nó bằng một trong các phương thức execute: execute(), executeUpdate() và executeQuery().
execute(): Dùng để thực thi các câu lệnh SQL DDL, trả về giá trị boolean cho biết có thể lấy đối tượng ResultSet hay không.
executeUpdate(): Dùng để thực thi các câu lệnh insert, update, delete. Trả về số nguyên đại diện cho số dòng bị ảnh hưởng.
executeQuery(): Dùng để thực thi các câu lệnh trả về dữ liệu dạng bảng (ví dụ SELECT). Trả về đối tượng lớp ResultSet.
Ví dụ
Chương trình JDBC sau minh họa cách tạo và thực thi statement.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class StatementExample {
public static void main(String args[]) throws SQLException {
// Đăng ký Driver
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
// Lấy kết nối
String mysqlUrl = "jdbc:mysql://localhost/testdb";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
System.out.println("Kết nối thành công......");
// Tạo Statement
Statement stmt = con.createStatement();
// Thực thi statement
String createTable = "CREATE TABLE Employee("
+ "Name VARCHAR(255), "
+ "Salary INT NOT NULL, "
+ "Location VARCHAR(255))";
boolean bool = stmt.execute(createTable);
String insertData = "INSERT INTO Employee("
+ "Name, Salary, Location) VALUES "
+ "('Amit', 30000, 'Hyderabad'), "
+ "('Kalyan', 40000, 'Vishakhapatnam'), "
+ "('Renuka', 50000, 'Delhi'), "
+ "('Archana', 15000, 'Mumbai')";
int i = stmt.executeUpdate(insertData);
System.out.println("Số dòng chèn: " + i);
ResultSet rs = stmt.executeQuery("Select * from Employee");
while(rs.next()) {
System.out.print("Name: " + rs.getString("Name") + ", ");
System.out.print("Salary: " + rs.getInt("Salary") + ", ");
System.out.print("City: " + rs.getString("Location"));
System.out.println();
}
}
}
Kết quả
Kết nối thành công...... Số dòng chèn: 4 Name: Amit, Salary: 30000, City: Hyderabad Name: Kalyan, Salary: 40000, City: Vishakhapatnam Name: Renuka, Salary: 50000, City: Delhi Name: Archana, Salary: 15000, City: Mumbai