ResultSet একটি Java ইন্টারফেস যা JDBC (Java Database Connectivity) API এর অংশ এবং এটি SQL কুয়েরি থেকে ডেটার ফলাফল ধারণ করে। যখন একটি SQL কুয়েরি (যেমন SELECT স্টেটমেন্ট) এক্সিকিউট করা হয়, তখন যে ডেটা রিটার্ন হয়, তা একটি ResultSet অবজেক্টে সংরক্ষণ করা হয়। এটি ডেটাবেস থেকে ফিরে আসা রেকর্ডগুলো (বা রো) একটি টেবিলের আকারে ধারণ করে এবং Java অ্যাপ্লিকেশনকে সেই ডেটা অ্যাক্সেস করতে সহায়তা করে।
ResultSet ডেটা হ্যান্ডলিংয়ের জন্য বিভিন্ন পদ্ধতি সরবরাহ করে, যেমন রেকর্ড পরিদর্শন, সেলে ডেটা প্রাপ্তি, এবং বিভিন্ন ফিল্টারিং অপারেশন।
ResultSet এর প্রধান বৈশিষ্ট্য:
- Iteration (ট্রাভার্সিং):
- ResultSet ডেটা একাধিক রো হিসেবে ধারণ করে এবং আপনি
next()মেথড ব্যবহার করে রো-by-রো ডেটা পরিদর্শন করতে পারেন।
- ResultSet ডেটা একাধিক রো হিসেবে ধারণ করে এবং আপনি
- Column Access:
getXXX()মেথডের মাধ্যমে আপনি কোনো নির্দিষ্ট কলাম থেকে ডেটা বের করতে পারেন, যেখানেXXXডেটা টাইপ (যেমনgetString(),getInt(),getDate()) হয়ে থাকে।
- Scrollable ResultSet:
- কিছু ResultSet অবজেক্ট scrollable হতে পারে, যার মাধ্যমে আপনি ডেটার মধ্যে উপরে/নিচে চলে যেতে পারেন, এবং এটি
forward-onlyহতে পারে, যেখানে ডেটা শুধুমাত্র পরবর্তীতে যেতে পারবে।
- কিছু ResultSet অবজেক্ট scrollable হতে পারে, যার মাধ্যমে আপনি ডেটার মধ্যে উপরে/নিচে চলে যেতে পারেন, এবং এটি
- Updateable ResultSet:
- Updateable ResultSet আপনাকে ডেটাবেসের ডেটা পরিবর্তন (যেমন, আপডেট বা ডিলিট) করার অনুমতি দেয়।
- Concurrency:
- ResultSet এর
CONCUR_READ_ONLYএবংCONCUR_UPDATABLEএর মাধ্যমে কনকারেন্সি কন্ট্রোল করা হয়। প্রথমটি শুধু পড়ার জন্য এবং দ্বিতীয়টি লেখার জন্য ব্যবহৃত হয়।
- ResultSet এর
ResultSet কিভাবে কাজ করে?
- SQL Query Execution:
- প্রথমে, একটি Statement বা PreparedStatement তৈরি করা হয়, যার মাধ্যমে SQL কুয়েরি ইজেকিউট করা হয়।
- এর মাধ্যমে একটি ResultSet অবজেক্ট তৈরি করা হয় যা ডেটাবেস থেকে ফিরে আসা ডেটা ধারণ করে।
- Data Retrieval:
- একবার ResultSet তৈরি হলে, আপনি
next()মেথড ব্যবহার করে রেকর্ডগুলি একে একে অ্যাক্সেস করতে পারেন। getString(),getInt(),getDate()এর মতো মেথড ব্যবহার করে আপনি নির্দিষ্ট কলামের মান সংগ্রহ করতে পারেন।
- একবার ResultSet তৈরি হলে, আপনি
- ResultSet Navigating:
- ResultSet একটি cursor এর মাধ্যমে রেকর্ডগুলো নিয়ে চলে। প্রথমে এটি শুরু অবস্থান (বিফোরফার্স্ট) থাকে, তাই
next()মেথড কল করতে হয় ডেটা পড়ার জন্য।
- ResultSet একটি cursor এর মাধ্যমে রেকর্ডগুলো নিয়ে চলে। প্রথমে এটি শুরু অবস্থান (বিফোরফার্স্ট) থাকে, তাই
- Close the ResultSet:
- একটি ResultSet ব্যবহারের পরে সেটি বন্ধ করা জরুরি। এটি
close()মেথড দিয়ে করা যায় যাতে মেমরি ফ্রি হয় এবং Garbage Collector অবজেক্টটি পরিস্কার করতে পারে।
- একটি ResultSet ব্যবহারের পরে সেটি বন্ধ করা জরুরি। এটি
ResultSet এর উদাহরণ:
ResultSet এর সাথে একটি সাধারণ JDBC উদাহরণ:
import java.sql.*;
public class ResultSetExample {
public static void main(String[] args) {
try {
// ড্রাইভার লোড করা
Class.forName("com.mysql.cj.jdbc.Driver");
// ডেটাবেসে সংযোগ স্থাপন করা
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "root", "password");
// SQL কুয়েরি তৈরি করা
Statement stmt = con.createStatement();
String query = "SELECT id, name, age FROM students";
// SQL কুয়েরি চালানো এবং ResultSet পাওয়া
ResultSet rs = stmt.executeQuery(query);
// ResultSet থেকে ডেটা পড়া
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age);
}
// ResultSet এবং Connection বন্ধ করা
rs.close();
stmt.close();
con.close();
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
কোড বিশ্লেষণ:
Connection: প্রথমে, ডেটাবেসে সংযোগ স্থাপন করা হয়।Statement: SQL কুয়েরি তৈরি করা হয় এবং এক্সিকিউট করা হয়।ResultSet: কুয়েরির ফলাফল হিসেবে ResultSet অবজেক্ট পাওয়া যায়।while(rs.next()): ResultSet এর মাধ্যমে ডেটা একে একে পরিদর্শন করা হয় এবংgetInt(),getString()মেথড দিয়ে কলামের মান পাওয়া হয়।rs.close(): ব্যবহার শেষে ResultSet বন্ধ করা হয়।
ResultSet এর কিছু গুরুত্বপূর্ণ মেথড:
next():ResultSetএর পরবর্তী রেকর্ডে এগিয়ে যাওয়ার জন্য ব্যবহার করা হয়।- এটি
booleanমান রিটার্ন করে, যদি পরবর্তী রেকর্ড থাকে তবেtrue, না থাকলেfalse।
if (rs.next()) { // Process data }getString(int columnIndex):- নির্দিষ্ট কলামের মান
Stringহিসেবে রিটার্ন করে। - কলামের ইনডেক্স বা কলামের নামের মাধ্যমে এটি ব্যবহার করা যেতে পারে।
String name = rs.getString("name"); // By column name int id = rs.getInt(1); // By column index- নির্দিষ্ট কলামের মান
getInt(int columnIndex):- নির্দিষ্ট কলামের মান
intহিসেবে রিটার্ন করে।
int age = rs.getInt("age");- নির্দিষ্ট কলামের মান
getDate(String columnLabel):- ডেটা টাইপ কলাম থেকে তারিখ রিটার্ন করে।
Date date = rs.getDate("birthdate");close():ResultSetঅবজেক্ট বন্ধ করার জন্য ব্যবহৃত হয়।
rs.close();
ResultSet এর ধরনের ভাগ:
- Forward-only ResultSet (Default):
- এটি শুধুমাত্র একে একে ডেটা পড়তে সক্ষম এবং পূর্বের রেকর্ডে ফিরে যেতে পারে না।
- Scroll-sensitive ResultSet:
- এটি ডেটাবেসে পরিবর্তন ঘটলে সেই পরিবর্তন ResultSet এ স্বয়ংক্রিয়ভাবে দেখা যায়।
- Scroll-insensitive ResultSet:
- এটি ডেটাবেসে পরিবর্তন ঘটলেও সেই পরিবর্তন ResultSet এ দেখা যায় না। এটি একটি snapshot হিসেবে ডেটা ধারণ করে।
- Updateable ResultSet:
- আপনি ডেটাকে ResultSet এর মাধ্যমে আপডেট করতে পারেন এবং পরে তা ডেটাবেসে সেভ করতে পারবেন।
ResultSet এর ব্যবহার:
- Data Retrieval: ডেটাবেস থেকে ডেটা পড়তে এবং প্রক্রিয়া করতে।
- Dynamic Updates: ডেটাবেসের তথ্য আপডেট, ইনসার্ট বা ডিলিট করতে।
- Transactions: ট্রানজেকশন পরিচালনা এবং ফলাফল সঠিকভাবে সংগ্রহ করতে।
ResultSet হলো একটি গুরুত্বপূর্ণ Java JDBC ইন্টারফেস যা SQL কুয়েরি থেকে প্রাপ্ত ডেটা ধারণ এবং অ্যাক্সেস করার জন্য ব্যবহৃত হয়। এটি বিভিন্ন মেথডের মাধ্যমে ডেটা পরিদর্শন, পরিবর্তন, এবং প্রদর্শন করতে সাহায্য করে। ResultSet এর মাধ্যমে ডেটা একে একে ট্রাভার্স করে প্রয়োজনীয় ডেটা অ্যাক্সেস করা যায়।
Read more