Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

การใช้ Quote ให้ถูกต้องกับ LIKE และ Search Variable ใน MySQL ผ่าน Java

การสร้าง Dynamic LIKE Query ใน Java อย่างปลอดภัย

ปัญหาหลัก: การต่อสตริง (String Concatenation) สำหรับ LIKE pattern ต้องจัดการ Single Quote ให้ถูกต้อง

รูปแบบที่ถูกต้อง

String searchKeyWord = "Smith";
String sqlQuery = "SELECT * FROM demo19 WHERE name LIKE '%" + searchKeyWord + "%'";

ผลลัพธ์ SQL: SELECT * FROM demo19 WHERE name LIKE '%Smith%'

ตัวอย่าง Java โค้ดเต็ม

public class RemoveJavaQueryError {
    public static void main(String[] args) {
        String searchKeyWord = "Smith";
        try (Connection con = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/sampledatabase", "root", "123456");
             Statement stmt = con.createStatement();
             ResultSet rs = stmt.executeQuery(
                 "SELECT * FROM demo19 WHERE name LIKE '%" + searchKeyWord + "%'")) {
            
            while (rs.next()) {
                System.out.println(rs.getString("name"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

ผลลัพธ์

John Smith
Adam Smith

⚠️ คำเตือนสำคัญ: วิธีนี้มีช่องโหว่ SQL Injection! ควรใช้ PreparedStatement แทน:

String sql = "SELECT * FROM demo19 WHERE name LIKE ?";
try (PreparedStatement ps = con.prepareStatement(sql)) {
    ps.setString(1, "%" + searchKeyWord + "%");
    ResultSet rs = ps.executeQuery();
    // ...
}