কম্পিউটার টিউটোরিয়াল

JDBC-এ CallableStatement কী এবং কীভাবে ব্যবহার করবেন

CallableStatement হলো JDBC-এ স্টোরড প্রোসিডিউর কল করার জন্য একটি ইন্টারফেস। এটি সব RDBMS-এ স্টোরড প্রোসিডিউর কল করার একটি স্ট্যান্ডার্ড পথ প্রদান করে (SQL escape syntax: {call procedure_name(?, ?, ?)})।

CallableStatement তৈরি

Connection.prepareCall() মেথড ব্যবহার করে:

CallableStatement cstmt = con.prepareCall("{call myProcedure(?, ?, ?)}");

এখানে ? হলো প্লেসহোল্ডার (ইনপুট/আউটপুট প্যারামিটার)।

ইনপুট প্যারামিটার সেট করা

সেটার মেথডগুলো: setString(), setInt(), setFloat() ইত্যাদি। دو আর্গুমেন্ট নেয়: প্যারামিটার ইন্ডেক্স (১-ভিত্তিক) এবং মান।

cstmt.setString(1, "Raghav");
cstmt.setInt(2, 3000);
cstmt.setString(3, "Hyderabad");

প্যারামিটার নাম দিয়েও সেট করা যায়: cstmt.setString("paramName", "value")।

এक्सিকিউশন

cstmt.execute();

যদি প্রোসিডিউর রেজাল্টসেট রিটার্ন করে তবে executeQuery(), আপডেট কাউন্টের জন্য executeUpdate() ব্যবহার করুন।

সম্পূর্ণ উদাহরণ

ডেটাবেসে প্রোসিডিউর:

CREATE PROCEDURE myProcedure (IN name VARCHAR(30), IN sal INT, IN loc VARCHAR(45))
BEGIN
    INSERT INTO Employee(Name, Salary, Location) VALUES (name, sal, loc);
END //

Java কোড:

CallableStatement cstmt = con.prepareCall("{call myProcedure(?, ?, ?)}");
cstmt.setString(1, "Raghav"); cstmt.setInt(2, 3000); cstmt.setString(3, "Hyderabad");
cstmt.setString(1, "Kalyan"); cstmt.setInt(2, 4000); cstmt.setString(3, "Vishakhapatnam");
cstmt.setString(1, "Rukmini"); cstmt.setInt(2, 5000); cstmt.setString(3, "Delhi");
cstmt.setString(1, "Archana"); cstmt.setInt(2, 15000); cstmt.setString(3, "Mumbai");
cstmt.execute();
System.out.println("Rows inserted ....");

আউটপুট: Connection established...... Rows inserted ....

ডেটাবেস যাচাই:

mysql> SELECT * FROM employee;
+---------+--------+----------------+
| Name    | Salary | Location       |
+---------+--------+----------------+
| Amit    | 30000  | Hyderabad      |
| Kalyan  | 40000  | Vishakhapatnam |
| Renuka  | 50000  | Delhi          |
| Archana | 15000  | Mumbai         |
| Raghav  | 3000   | Hyderabad      |
| Raghav  | 3000   | Hyderabad      |
| Kalyan  | 4000   | Vishakhapatnam |
| Rukmini | 5000   | Delhi          |
| Archana | 15000  | Mumbai         |
+---------+--------+----------------+

গুরুত্বপূর্ণ: আউটপুট প্যারামিটার রেজিস্টার করতে registerOutParameter(int index, int sqlType) ব্যবহার করুন। আউটপুট মান পেতে getString(), getInt() ইত্যাদি।

  1. ৩ডি প্রিন্টিং কী? ইতিহাস, কাজকাজ ও ভবিষ্যৎ

  2. আইপি ঠিকানা কী?

  3. MySQL JDBC ড্রাইভার কানেকশন স্ট্রিং কী?

  4. JDBC-তে ResultSet কী? ResultSet অবজেক্ট থেকে ডেটা কীভাবে বের করবেন?