ResultSet হল JDBC (Java Database Connectivity) এর একটি গুরুত্বপূর্ণ অংশ যা SQL কুয়েরি চালানোর পর ডেটাবেস থেকে ফেরত আসা ডেটা ধারণ করে। এটি একটি ইন্টারফেস যা ডেটাবেস থেকে সিলেক্ট করা রেকর্ড বা ডেটা পয়েন্টের সঞ্চালন এবং প্রক্রিয়াকরণে ব্যবহৃত হয়। ResultSet অবজেক্টের মাধ্যমে আপনি SQL কুয়েরি থেকে প্রাপ্ত ডেটার উপর অপারেশন করতে পারেন, যেমন রিডিং, ম্যানিপুলেশন এবং ফিল্টারিং।
JDBC এর executeQuery() মেথড SQL SELECT কুয়েরি চালানোর পর একটি ResultSet অবজেক্ট ফেরত দেয়, যা কুয়েরির ফলাফল ধারণ করে।
ResultSet এর ভূমিকা
1. SQL কুয়েরির ফলাফল ধারণ করা
ResultSet SQL কুয়েরি চালানোর পর পাওয়া ফলাফল ধারণ করে। এটি একটি টেবিলের মতো রেকর্ডের এক্সেস দেয় যেখানে সারি (row) এবং কলাম (column) থাকে। আপনি প্রতিটি সারি এবং কলামকে ResultSet অবজেক্টের মাধ্যমে অ্যাক্সেস করতে পারেন।
2. ডেটার মাধ্যমে নেভিগেট করা
ResultSet অবজেক্ট ব্যবহার করে আপনি এক বা একাধিক রেকর্ডে নেভিগেট করতে পারেন। আপনি next(), previous(), first(), last() ইত্যাদি মেথড ব্যবহার করে রেকর্ডের মধ্যে নেভিগেট করতে পারেন।
3. ডেটা রিট্রিভাল
ResultSet এর মাধ্যমে আপনি SQL কুয়েরি থেকে প্রাপ্ত ডেটার বিভিন্ন কলাম এবং সারি এক্সেস করতে পারেন। এর জন্য আপনাকে getXXX() মেথড (যেমন getString(), getInt(), getDate(), ইত্যাদি) ব্যবহার করতে হবে।
4. ডেটা টাইপ কনভার্সন
SQL ডেটাবেসের ডেটার ধরন Java ডেটা টাইপে রূপান্তরিত করার কাজ ResultSet এর মাধ্যমে করা হয়। উদাহরণস্বরূপ, একটি SQL INT ফিল্ডের মান getInt() মেথডের মাধ্যমে int টাইপে রূপান্তরিত হয়।
5. লোডেড ডেটা উপস্থাপন
একটি ResultSet অবজেক্ট তখনই পূর্ণাঙ্গ হয়ে ওঠে যখন SQL কুয়েরি চালানো হয়। তবে, ResultSet একটি পরিশোধিত ডেটাবেস কনটেক্সট থেকে ডেটা ধারণ করে এবং সেটা প্রয়োজনীয় সময়ে সারি আকারে এক্সেস করা যায়।
ResultSet এর মেথডস
ResultSet বিভিন্ন ধরনের মেথড প্রদান করে যা ডেটাবেসের ডেটার সাথে কাজ করার জন্য ব্যবহৃত হয়। কিছু গুরুত্বপূর্ণ ResultSet মেথড:
1. next()
এই মেথডটি ResultSet এর পরবর্তী রেকর্ডে নেভিগেট করতে ব্যবহৃত হয়। এটি একটি বুলিয়ান মান প্রদান করে, যদি পরবর্তী রেকর্ড থাকে তবে true এবং না থাকলে false ফেরত দেয়।
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
// ডেটা প্রক্রিয়াকরণ
}
2. getInt() / getString() / getDate()
এই মেথডগুলি ResultSet থেকে নির্দিষ্ট কলামের ডেটা টাইপ অনুযায়ী মান ফেরত দেয়।
int id = resultSet.getInt("id"); // 'id' কলাম থেকে ইনটিজার মান নেয়
String name = resultSet.getString("name"); // 'name' কলাম থেকে স্ট্রিং মান নেয়
Date hireDate = resultSet.getDate("hire_date"); // 'hire_date' কলাম থেকে তারিখ নেয়
3. getObject()
এই মেথডটি সাধারণত সাধারণ ডেটা টাইপের চেয়ে জটিল ডেটা ধরনে ব্যবহৃত হয়, যেমন Blob, Clob, অথবা Date।
Object data = resultSet.getObject("data_column");
4. absolute()
এই মেথডটি ডেটার মধ্যে সরাসরি নির্দিষ্ট অবস্থানে চলে যায়।
resultSet.absolute(5); // 5 তম রেকর্ডে চলে যাবে
5. first() / last()
এই মেথডগুলি প্রথম এবং শেষ রেকর্ডে যাওয়ার জন্য ব্যবহৃত হয়।
resultSet.first(); // প্রথম রেকর্ডে চলে যাবে
resultSet.last(); // শেষ রেকর্ডে চলে যাবে
ResultSet এর ধরন
ResultSet কে তিনটি প্রধান ধরনে ভাগ করা হয়:
1. ResultSet.TYPE_FORWARD_ONLY
এই ধরনটি ডেটা শুধুমাত্র এক দিকে (সাধারণত উপরের থেকে নিচে) পড়তে দেয়। আপনি শুধুমাত্র next() মেথড ব্যবহার করে রেকর্ডের মধ্যে নেভিগেট করতে পারবেন।
2. ResultSet.TYPE_SCROLL_INSENSITIVE
এই ধরনটি আপনাকে একাধিক দিকে (আগে-পিছে) নেভিগেট করতে দেয়, কিন্তু এটি ডেটাবেসের কোনো পরিবর্তন সম্পর্কিত তথ্য প্রদান করবে না (যেমন, রেকর্ড আপডেট হওয়ার পরও পুরনো ডেটা দেখাবে)।
3. ResultSet.TYPE_SCROLL_SENSITIVE
এই ধরনটি আপনাকে একাধিক দিকে নেভিগেট করতে দেয় এবং এটি ডেটাবেসের কোনো পরিবর্তন অনুসরণ করে। অর্থাৎ, আপনি যেকোনো পরিবর্তন দেখতে পাবেন যা ডেটাবেসে ঘটছে।
ResultSet ব্যবহার করার সময় কিছু গুরুত্বপূর্ণ টিপস
1. নেভিগেশন:
next() মেথড ব্যবহার করে আপনি শুধু এক দিকে নেভিগেট করতে পারবেন। যদি আপনি ডেটার মধ্যে উল্টোপাল্টা নেভিগেশন চান, তবে TYPE_SCROLL_INSENSITIVE অথবা TYPE_SCROLL_SENSITIVE ধরন ব্যবহার করুন।
2. ডেটা প্রক্রিয়াকরণ:
ResultSet ব্যবহার করার সময় ডেটার প্রতিটি কলাম এবং সারি এক্সেস করার জন্য getXXX() মেথড ব্যবহার করুন, যেখানে XXX হবে ডেটার টাইপ (যেমন getInt(), getString(), ইত্যাদি)।
3. Resources Management:
ডেটাবেস সংযোগ এবং ResultSet ব্যবহারের পর সেগুলো বন্ধ করা অত্যন্ত গুরুত্বপূর্ণ, কারণ সঠিকভাবে বন্ধ না করলে মেমরি লিক হতে পারে।
resultSet.close();
statement.close();
connection.close();
সারাংশ
ResultSet হল JDBC-তে ব্যবহৃত একটি গুরুত্বপূর্ণ ইন্টারফেস, যা SQL কুয়েরির ফলাফল ধারণ করে এবং ডেটাবেসের ডেটা এক্সেস ও প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়। এটি next(), getXXX() মেথডের মাধ্যমে ডেটা পড়তে সক্ষম এবং এটি বিভিন্ন ধরনের ধরণের (TYPE_FORWARD_ONLY, TYPE_SCROLL_INSENSITIVE, TYPE_SCROLL_SENSITIVE) সমর্থন করে। ResultSet ব্যবহার করার সময় ডেটাবেস সংযোগ এবং রিসোর্স ব্যবস্থাপনা খেয়াল রাখা অত্যন্ত গুরুত্বপূর্ণ।
Read more