JDBC-এ Statement ইন্টারফেসের তিনটি এক্সিকিউশন মেথড রয়েছে, যারা আলাদা আলাদা উদ্দেশ্যে ব্যবহৃত হয়।
1. execute() মেথড
উদ্দেশ্য: যেকোনো SQL স্টেটমেন্ট এক্সিকিউট করতে (DDL, DML, DQL)।
রিটার্ন: boolean - true হলে রেজাল্টসেট (ResultSet) রিটার্ন হয়েছে (যেমন SELECT), false হলে আপডেট কাউন্ট বা কোনো রেজাল্ট নেই (যেমন CREATE, INSERT, UPDATE, DELETE)।
উদাহরণ (CREATE TABLE)
Statement stmt = con.createStatement(); String createTable = "CREATE TABLE Employee(Name VARCHAR(255), Salary INT NOT NULL, Location VARCHAR(255))"; boolean bool = stmt.execute(createTable); System.out.println(bool); // false
Connection established...... false
2. executeUpdate() মেথড
উদ্দেশ্য: ডেটা মডিফিকেশন স্টেটমেন্ট (INSERT, UPDATE, DELETE, DDL)।
রিটার্ন: int - প্রভাবিত রোয়ের সংখ্যা। DDL-এর জন্য ০।
উদাহরণ (INSERT)
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("Rows inserted: " + i); // 4
Connection established...... Rows inserted: 4
3. executeQuery() মেথড
উদ্দেশ্য: ডেটা রিট্রিভ কোয়েরি (SELECT) এক্সিকিউট করতে।
রিটার্ন: ResultSet অবজেক্ট (কখনো null নয়, খালি হলে next() false রিটার্ন করে)।
উদাহরণ (SELECT)
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.println("City: " + rs.getString("Location"));
}
Connection established...... Name: Amit, Salary: 30000, City: Hyderabad Name: Kalyan, Salary: 40000, City: Vishakhapatnam Name: Renuka, Salary: 50000, City: Delhi Name: Archana, Salary: 15000, City: Mumbai
সারসংক্ষেপ টেবিল
| মেথড | ব্যবহার | রিটার্ন টাইপ | উদাহরণ |
|---|---|---|---|
| execute() | যেকোনো SQL | boolean | DDL, অজানা টাইপ |
| executeUpdate() | INSERT, UPDATE, DELETE, DDL | int (row count) | ডেটা মডিফিকেশন |
| executeQuery() | SELECT | ResultSet | ডেটা পড়া |
সেরা প্র্যাকটিস: স্পষ্টত아 জানা থাকলে নির্দিষ্ট মেথড ব্যবহার করুন। execute() শুধু তখন ব্যবহার করুন যখন স্টেটমেন্ট টাইপ রানটাইমে ডাইনামিকভাবে নির্ধারিত হয়।