ResultSet কি এবং কিভাবে এটি কাজ করে?

Java Database Connectivity (JDBC) - জাভা ইন্টারভিউ প্রশ্ন (Java Interview Questions) - Java Technologies

310

ResultSet একটি Java ইন্টারফেস যা JDBC (Java Database Connectivity) API এর অংশ এবং এটি SQL কুয়েরি থেকে ডেটার ফলাফল ধারণ করে। যখন একটি SQL কুয়েরি (যেমন SELECT স্টেটমেন্ট) এক্সিকিউট করা হয়, তখন যে ডেটা রিটার্ন হয়, তা একটি ResultSet অবজেক্টে সংরক্ষণ করা হয়। এটি ডেটাবেস থেকে ফিরে আসা রেকর্ডগুলো (বা রো) একটি টেবিলের আকারে ধারণ করে এবং Java অ্যাপ্লিকেশনকে সেই ডেটা অ্যাক্সেস করতে সহায়তা করে।

ResultSet ডেটা হ্যান্ডলিংয়ের জন্য বিভিন্ন পদ্ধতি সরবরাহ করে, যেমন রেকর্ড পরিদর্শন, সেলে ডেটা প্রাপ্তি, এবং বিভিন্ন ফিল্টারিং অপারেশন।


ResultSet এর প্রধান বৈশিষ্ট্য:

  1. Iteration (ট্রাভার্সিং):
    • ResultSet ডেটা একাধিক রো হিসেবে ধারণ করে এবং আপনি next() মেথড ব্যবহার করে রো-by-রো ডেটা পরিদর্শন করতে পারেন।
  2. Column Access:
    • getXXX() মেথডের মাধ্যমে আপনি কোনো নির্দিষ্ট কলাম থেকে ডেটা বের করতে পারেন, যেখানে XXX ডেটা টাইপ (যেমন getString(), getInt(), getDate()) হয়ে থাকে।
  3. Scrollable ResultSet:
    • কিছু ResultSet অবজেক্ট scrollable হতে পারে, যার মাধ্যমে আপনি ডেটার মধ্যে উপরে/নিচে চলে যেতে পারেন, এবং এটি forward-only হতে পারে, যেখানে ডেটা শুধুমাত্র পরবর্তীতে যেতে পারবে।
  4. Updateable ResultSet:
    • Updateable ResultSet আপনাকে ডেটাবেসের ডেটা পরিবর্তন (যেমন, আপডেট বা ডিলিট) করার অনুমতি দেয়।
  5. Concurrency:
    • ResultSet এর CONCUR_READ_ONLY এবং CONCUR_UPDATABLE এর মাধ্যমে কনকারেন্সি কন্ট্রোল করা হয়। প্রথমটি শুধু পড়ার জন্য এবং দ্বিতীয়টি লেখার জন্য ব্যবহৃত হয়।

ResultSet কিভাবে কাজ করে?

  1. SQL Query Execution:
    • প্রথমে, একটি Statement বা PreparedStatement তৈরি করা হয়, যার মাধ্যমে SQL কুয়েরি ইজেকিউট করা হয়।
    • এর মাধ্যমে একটি ResultSet অবজেক্ট তৈরি করা হয় যা ডেটাবেস থেকে ফিরে আসা ডেটা ধারণ করে।
  2. Data Retrieval:
    • একবার ResultSet তৈরি হলে, আপনি next() মেথড ব্যবহার করে রেকর্ডগুলি একে একে অ্যাক্সেস করতে পারেন।
    • getString(), getInt(), getDate() এর মতো মেথড ব্যবহার করে আপনি নির্দিষ্ট কলামের মান সংগ্রহ করতে পারেন।
  3. ResultSet Navigating:
    • ResultSet একটি cursor এর মাধ্যমে রেকর্ডগুলো নিয়ে চলে। প্রথমে এটি শুরু অবস্থান (বিফোরফার্স্ট) থাকে, তাই next() মেথড কল করতে হয় ডেটা পড়ার জন্য।
  4. Close the ResultSet:
    • একটি ResultSet ব্যবহারের পরে সেটি বন্ধ করা জরুরি। এটি close() মেথড দিয়ে করা যায় যাতে মেমরি ফ্রি হয় এবং Garbage Collector অবজেক্টটি পরিস্কার করতে পারে।

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();
        }
    }
}

কোড বিশ্লেষণ:

  1. Connection: প্রথমে, ডেটাবেসে সংযোগ স্থাপন করা হয়।
  2. Statement: SQL কুয়েরি তৈরি করা হয় এবং এক্সিকিউট করা হয়।
  3. ResultSet: কুয়েরির ফলাফল হিসেবে ResultSet অবজেক্ট পাওয়া যায়।
  4. while(rs.next()): ResultSet এর মাধ্যমে ডেটা একে একে পরিদর্শন করা হয় এবং getInt(), getString() মেথড দিয়ে কলামের মান পাওয়া হয়।
  5. rs.close(): ব্যবহার শেষে ResultSet বন্ধ করা হয়।

ResultSet এর কিছু গুরুত্বপূর্ণ মেথড:

  1. next():

    • ResultSet এর পরবর্তী রেকর্ডে এগিয়ে যাওয়ার জন্য ব্যবহার করা হয়।
    • এটি boolean মান রিটার্ন করে, যদি পরবর্তী রেকর্ড থাকে তবে true, না থাকলে false
    if (rs.next()) {
        // Process data
    }
    
  2. getString(int columnIndex):

    • নির্দিষ্ট কলামের মান String হিসেবে রিটার্ন করে।
    • কলামের ইনডেক্স বা কলামের নামের মাধ্যমে এটি ব্যবহার করা যেতে পারে।
    String name = rs.getString("name");  // By column name
    int id = rs.getInt(1);  // By column index
    
  3. getInt(int columnIndex):

    • নির্দিষ্ট কলামের মান int হিসেবে রিটার্ন করে।
    int age = rs.getInt("age");
    
  4. getDate(String columnLabel):

    • ডেটা টাইপ কলাম থেকে তারিখ রিটার্ন করে।
    Date date = rs.getDate("birthdate");
    
  5. close():

    • ResultSet অবজেক্ট বন্ধ করার জন্য ব্যবহৃত হয়।
    rs.close();
    

ResultSet এর ধরনের ভাগ:

  1. Forward-only ResultSet (Default):
    • এটি শুধুমাত্র একে একে ডেটা পড়তে সক্ষম এবং পূর্বের রেকর্ডে ফিরে যেতে পারে না।
  2. Scroll-sensitive ResultSet:
    • এটি ডেটাবেসে পরিবর্তন ঘটলে সেই পরিবর্তন ResultSet এ স্বয়ংক্রিয়ভাবে দেখা যায়।
  3. Scroll-insensitive ResultSet:
    • এটি ডেটাবেসে পরিবর্তন ঘটলেও সেই পরিবর্তন ResultSet এ দেখা যায় না। এটি একটি snapshot হিসেবে ডেটা ধারণ করে।
  4. Updateable ResultSet:
    • আপনি ডেটাকে ResultSet এর মাধ্যমে আপডেট করতে পারেন এবং পরে তা ডেটাবেসে সেভ করতে পারবেন।

ResultSet এর ব্যবহার:

  • Data Retrieval: ডেটাবেস থেকে ডেটা পড়তে এবং প্রক্রিয়া করতে।
  • Dynamic Updates: ডেটাবেসের তথ্য আপডেট, ইনসার্ট বা ডিলিট করতে।
  • Transactions: ট্রানজেকশন পরিচালনা এবং ফলাফল সঠিকভাবে সংগ্রহ করতে।

ResultSet হলো একটি গুরুত্বপূর্ণ Java JDBC ইন্টারফেস যা SQL কুয়েরি থেকে প্রাপ্ত ডেটা ধারণ এবং অ্যাক্সেস করার জন্য ব্যবহৃত হয়। এটি বিভিন্ন মেথডের মাধ্যমে ডেটা পরিদর্শন, পরিবর্তন, এবং প্রদর্শন করতে সাহায্য করে। ResultSet এর মাধ্যমে ডেটা একে একে ট্রাভার্স করে প্রয়োজনীয় ডেটা অ্যাক্সেস করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...