Java-এ MySQL ডাটাবেসে সিকিউর কোয়েরি চালাতে PreparedStatement ব্যবহার করা সেরা অনুশীলন। এটি SQL ইনজেকশন প্রতিরোধ করে এবং পারফরম্যান্স বাড়ায়।
সিনট্যাক্স
String query = "SELECT yourColumnName FROM yourTableName WHERE name = ?"; PreparedStatement ps = (PreparedStatement) con.prepareStatement(query); ps.setString(columnIndex, yourValue);
উদাহরণ
টেবিল তৈরি:
CREATE TABLE demo37 (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(200)
);
ডেটা ইনসার্ট:
INSERT INTO demo37(name) VALUES ('John'), ('Bob'), ('John'), ('Chris'), ('David'), ('John'), ('Mike');
Java কোড
import java.sql.*;
public class PrepareStatementDemo {
public static void main(String[] args) {
Connection con = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver"); // MySQL 8.0+ 드라이버
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sampledatabase", "root", "123456");
String query = "SELECT name FROM demo37 WHERE name = ?";
PreparedStatement ps = con.prepareStatement(query);
ps.setString(1, "John"); // 1 নম্বর প্লেসহোল্ডার
ResultSet rs = ps.executeQuery();
while (rs.next()) {
System.out.println(rs.getString(1));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try { if (con != null) con.close(); } catch (SQLException e) { e.printStackTrace(); }
}
}
}
আউটপুট
John John John
ব্যাখ্যা: ? হলো প্লেসহোল্ডার। ps.setString(1, "John") দিয়ে প্রথম প্লেসহোল্ডারের মান সেট করা হয়। PreparedStatement প্রিকম্পাইলড হয়, তাই একই কোয়েরি বারবার চালালে পারফরম্যান্স ভালো থাকে। MySQL 8.0+ এর জন্য ড্রাইভার ক্লাস com.mysql.cj.jdbc.Driver।