Giới thiệu
Khi xây dựng câu lệnh SQL động trong Java với LIKE và biến tìm kiếm, việc nối chuỗi và dấu nháy đơn rất dễ sai. Cú pháp an toàn: \"... LIKE '%\" + keyword + \"%'\".
Ví dụ Java JDBC
String searchKeyWord = "Smith";
String sqlQuery = "SELECT * FROM demo19 WHERE name LIKE '%" + searchKeyWord + "%'";
Code hoàn chỉnh
import java.sql.*;
public class RemoveJavaQueryError {
public static void main(String[] args) {
Connection con = null;
Statement stmt = null;
try {
String searchKeyWord = "Smith";
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/sampledatabase", "root", "123456");
stmt = con.createStatement();
String sqlQuery = "SELECT * FROM demo19 WHERE name LIKE '%" + searchKeyWord + "%'";
ResultSet rs = stmt.executeQuery(sqlQuery);
while (rs.next()) {
System.out.println(rs.getString("name"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Kết quả:
John Smith
Adam Smith
⚠️ Cảnh báo bảo mật: Cách nối chuỗi này dễ bị SQL Injection. Nên dùng PreparedStatement:
String sql = "SELECT * FROM demo19 WHERE name LIKE ?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, "%" + searchKeyWord + "%");
ResultSet rs = ps.executeQuery();