Java Database Connectivity (JDBC) Examples

Java Technologies - জাভা উদাহরন (Java  Examples)
187
187

Java Database Connectivity (JDBC) ব্যবহার করে ডেটাবেসের সাথে যোগাযোগ করা এবং ডেটা পরিচালনা করা যায়। নিচে JDBC এর একটি সাধারণ উদাহরণ দেওয়া হলো:

JDBC উদাহরণ

JDBC ব্যবহার করার জন্য প্রথমে কিছু মৌলিক স্টেপ অনুসরণ করতে হবে:

  1. JDBC ড্রাইভার লোড করা: ডেটাবেসের সাথে যোগাযোগ করতে ড্রাইভার লোড করতে হয়।
  2. ডেটাবেসের সাথে সংযোগ স্থাপন: Connection অবজেক্ট ব্যবহার করে ডেটাবেসের সাথে সংযোগ স্থাপন করা হয়।
  3. SQL কুয়েরি রান করা: Statement বা PreparedStatement ব্যবহার করে SQL কুয়েরি রান করা হয়।
  4. ফলাফল পেতে: ResultSet ব্যবহার করে SQL কুয়েরির ফলাফল পাওয়া যায়।
  5. সংযোগ বন্ধ করা: কাজ শেষ হলে ডেটাবেসের সাথে সংযোগ বন্ধ করা হয়।

১. JDBC - MySQL ডেটাবেসে সংযোগ স্থাপন এবং ডেটা নির্বাচন (SELECT)

import java.sql.*;

public class JDBCExample {
    public static void main(String[] args) {
        // ডেটাবেসের সাথে সংযোগ স্থাপনের জন্য প্রয়োজনীয় তথ্য
        String url = "jdbc:mysql://localhost:3306/testdb";  // ডেটাবেস URL
        String user = "root";  // ইউজারনেম
        String password = "password";  // পাসওয়ার্ড

        // SQL কুয়েরি
        String query = "SELECT * FROM employees";

        // JDBC অবজেক্ট
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try {
            // JDBC ড্রাইভার লোড
            Class.forName("com.mysql.cj.jdbc.Driver");

            // ডেটাবেসে সংযোগ স্থাপন
            connection = DriverManager.getConnection(url, user, password);

            // SQL কুয়েরি চালানোর জন্য Statement তৈরি
            statement = connection.createStatement();

            // কুয়েরি রান করা
            resultSet = statement.executeQuery(query);

            // ফলাফল প্রিন্ট করা
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                String department = resultSet.getString("department");
                System.out.println("ID: " + id + ", Name: " + name + ", Department: " + department);
            }
        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            // সংযোগ বন্ধ করা
            try {
                if (resultSet != null) resultSet.close();
                if (statement != null) statement.close();
                if (connection != null) connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

২. JDBC - ডেটাবেসে ডেটা ইনসার্ট (INSERT)

import java.sql.*;

public class JDBCInsertExample {
    public static void main(String[] args) {
        // ডেটাবেসের সাথে সংযোগ স্থাপনের জন্য প্রয়োজনীয় তথ্য
        String url = "jdbc:mysql://localhost:3306/testdb";
        String user = "root";
        String password = "password";

        // SQL কুয়েরি
        String query = "INSERT INTO employees (name, department) VALUES (?, ?)";

        // JDBC অবজেক্ট
        Connection connection = null;
        PreparedStatement preparedStatement = null;

        try {
            // JDBC ড্রাইভার লোড
            Class.forName("com.mysql.cj.jdbc.Driver");

            // ডেটাবেসে সংযোগ স্থাপন
            connection = DriverManager.getConnection(url, user, password);

            // SQL কুয়েরি চালানোর জন্য PreparedStatement তৈরি
            preparedStatement = connection.prepareStatement(query);

            // প্যারামিটার সেট করা
            preparedStatement.setString(1, "Alice");
            preparedStatement.setString(2, "HR");

            // ইনসার্ট কুয়েরি রান করা
            int rowsAffected = preparedStatement.executeUpdate();
            System.out.println("Rows affected: " + rowsAffected);
        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            // সংযোগ বন্ধ করা
            try {
                if (preparedStatement != null) preparedStatement.close();
                if (connection != null) connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

৩. JDBC - ডেটাবেসে ডেটা আপডেট (UPDATE)

import java.sql.*;

public class JDBCUpdateExample {
    public static void main(String[] args) {
        // ডেটাবেসের সাথে সংযোগ স্থাপনের জন্য প্রয়োজনীয় তথ্য
        String url = "jdbc:mysql://localhost:3306/testdb";
        String user = "root";
        String password = "password";

        // SQL কুয়েরি
        String query = "UPDATE employees SET department = ? WHERE id = ?";

        // JDBC অবজেক্ট
        Connection connection = null;
        PreparedStatement preparedStatement = null;

        try {
            // JDBC ড্রাইভার লোড
            Class.forName("com.mysql.cj.jdbc.Driver");

            // ডেটাবেসে সংযোগ স্থাপন
            connection = DriverManager.getConnection(url, user, password);

            // SQL কুয়েরি চালানোর জন্য PreparedStatement তৈরি
            preparedStatement = connection.prepareStatement(query);

            // প্যারামিটার সেট করা
            preparedStatement.setString(1, "IT");
            preparedStatement.setInt(2, 1);  // ID = 1 এর রেকর্ড আপডেট

            // আপডেট কুয়েরি রান করা
            int rowsAffected = preparedStatement.executeUpdate();
            System.out.println("Rows affected: " + rowsAffected);
        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            // সংযোগ বন্ধ করা
            try {
                if (preparedStatement != null) preparedStatement.close();
                if (connection != null) connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

৪. JDBC - ডেটাবেস থেকে ডেটা ডিলিট (DELETE)

import java.sql.*;

public class JDBCDeleteExample {
    public static void main(String[] args) {
        // ডেটাবেসের সাথে সংযোগ স্থাপনের জন্য প্রয়োজনীয় তথ্য
        String url = "jdbc:mysql://localhost:3306/testdb";
        String user = "root";
        String password = "password";

        // SQL কুয়েরি
        String query = "DELETE FROM employees WHERE id = ?";

        // JDBC অবজেক্ট
        Connection connection = null;
        PreparedStatement preparedStatement = null;

        try {
            // JDBC ড্রাইভার লোড
            Class.forName("com.mysql.cj.jdbc.Driver");

            // ডেটাবেসে সংযোগ স্থাপন
            connection = DriverManager.getConnection(url, user, password);

            // SQL কুয়েরি চালানোর জন্য PreparedStatement তৈরি
            preparedStatement = connection.prepareStatement(query);

            // প্যারামিটার সেট করা
            preparedStatement.setInt(1, 1);  // ID = 1 এর রেকর্ড ডিলিট

            // ডিলিট কুয়েরি রান করা
            int rowsAffected = preparedStatement.executeUpdate();
            System.out.println("Rows affected: " + rowsAffected);
        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            // সংযোগ বন্ধ করা
            try {
                if (preparedStatement != null) preparedStatement.close();
                if (connection != null) connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

JDBC প্রযুক্তি

JDBC হল একটি API যা Java প্রোগ্রামগুলিকে রিলেশনাল ডেটাবেসের সাথে যোগাযোগ করতে সহায়তা করে। এই API ডেটাবেসের সাথে সংযোগ স্থাপন, ডেটা পরিচালনা, কুয়েরি চালানো এবং ফলাফল ফেরত আনা সহ বিভিন্ন কাজের জন্য ব্যবহৃত হয়। JDBC API অনেক ধরণের ডেটাবেস যেমন MySQL, PostgreSQL, Oracle, SQL Server ইত্যাদির জন্য ড্রাইভার সরবরাহ করে।

JDBC এর মৌলিক উপাদান:

  1. Connection: ডেটাবেসের সাথে সংযোগ স্থাপন করতে ব্যবহৃত হয়।
  2. Statement: SQL কুয়েরি বা আপডেট চালানোর জন্য ব্যবহৃত হয়।
  3. PreparedStatement: এটি ডায়নামিক SQL কুয়েরি তৈরি করার জন্য ব্যবহৃত হয়।
  4. ResultSet: SQL কুয়েরির ফলাফল ধারণ করার জন্য ব্যবহৃত হয়।

এগুলো ছিল JDBC এর কিছু উদাহরণ।

Content added By

JDBC Connection Example: MySQL বা অন্য ডেটাবেসের সাথে JDBC ব্যবহার করে সংযোগ

107
107

জাভা (Java) দিয়ে JDBC (Java Database Connectivity) ব্যবহার করে MySQL বা অন্য ডেটাবেসের সাথে সংযোগ স্থাপন করার উদাহরণ নিচে দেওয়া হল। JDBC এর মাধ্যমে Java অ্যাপ্লিকেশন ডেটাবেসের সাথে সংযোগ করে ডেটা ইনসার্ট, আপডেট, বা রিট্রিভ করতে পারে।

JDBC Connection Example: MySQL Database

ধরা যাক, আপনি MySQL ডেটাবেসের সাথে সংযোগ করতে চান। এই উদাহরণে একটি সিম্পল JDBC প্রোগ্রাম লেখা হবে যা MySQL ডেটাবেসে সংযোগ স্থাপন করবে এবং একটি সিম্পল SELECT কুয়েরি এক্সিকিউট করবে।

১. JDBC ড্রাইভার ইনস্টলেশন

প্রথমে, MySQL JDBC ড্রাইভার ডাউনলোড এবং প্রজেক্টে যোগ করতে হবে। Maven বা Gradle ব্যবহার করলে সহজে লাইব্রেরি যুক্ত করা যাবে। Maven-এর জন্য pom.xml ফাইলের মধ্যে নিচের ডিপেনডেন্সি যোগ করুন:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.29</version> <!-- আপনার ড্রাইভারের ভার্সন অনুসারে পরিবর্তন করুন -->
</dependency>

২. JDBC কোড উদাহরণ

এখানে একটি উদাহরণ দেওয়া হল যা MySQL ডেটাবেসের সাথে সংযোগ স্থাপন করবে এবং একটি SELECT কুয়েরি চালাবে।

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.SQLException;

public class JdbcExample {
    public static void main(String[] args) {
        // ডেটাবেস সংযোগের জন্য প্রয়োজনীয় ভেরিয়েবল
        String url = "jdbc:mysql://localhost:3306/your_database_name";  // আপনার ডেটাবেসের নাম এখানে দিন
        String username = "your_username";  // ডেটাবেসের ইউজারনেম
        String password = "your_password";  // ডেটাবেসের পাসওয়ার্ড

        // JDBC সংযোগ স্থাপন
        try {
            // ড্রাইভার লোড করুন
            Class.forName("com.mysql.cj.jdbc.Driver");

            // ডেটাবেস সংযোগ তৈরি করুন
            Connection connection = DriverManager.getConnection(url, username, password);

            // স্টেটমেন্ট তৈরি করুন
            Statement statement = connection.createStatement();

            // একটি SELECT কুয়েরি চালান
            String sql = "SELECT id, name, email FROM users";  // এখানে 'users' টেবিলের নাম দিন
            ResultSet resultSet = statement.executeQuery(sql);

            // ফলাফল প্রিন্ট করুন
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                String email = resultSet.getString("email");
                System.out.println("ID: " + id + ", Name: " + name + ", Email: " + email);
            }

            // রিসোর্স বন্ধ করুন
            resultSet.close();
            statement.close();
            connection.close();

        } catch (ClassNotFoundException e) {
            System.out.println("JDBC ড্রাইভার লোড করতে সমস্যা হয়েছে: " + e.getMessage());
        } catch (SQLException e) {
            System.out.println("ডেটাবেস সংযোগ বা কুয়েরি চালাতে সমস্যা হয়েছে: " + e.getMessage());
        }
    }
}

৩. প্রোগ্রাম ব্যাখ্যা:

  • DriverManager.getConnection(): এটি ডেটাবেসের সাথে সংযোগ স্থাপন করার জন্য ব্যবহৃত হয়। URL, ইউজারনেম এবং পাসওয়ার্ড প্যারামিটার হিসেবে গ্রহণ করে।
  • Statement: এটি SQL কুয়েরি চালানোর জন্য ব্যবহৃত হয়। এখানে executeQuery() মেথডটি একটি SELECT কুয়েরি চালানোর জন্য ব্যবহৃত হয়েছে।
  • ResultSet: এটি কুয়েরি থেকে ফলাফল ধারণ করে এবং next() মেথডের মাধ্যমে রেকর্ডগুলোর মাধ্যমে ট্রাভার্স করা হয়।
  • SQLException: যদি কোনো SQL সম্পর্কিত সমস্যা হয় তবে এটি ক্যাচ করা হয়।

৪. MySQL ডেটাবেসে সংযোগের জন্য প্রয়োজনীয় ডেটাবেস সেটআপ:

ডেটাবেস সেটআপ করতে MySQL-এ একটি ডেটাবেস এবং টেবিল তৈরি করতে হবে:

CREATE DATABASE your_database_name;
USE your_database_name;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    email VARCHAR(255)
);

INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com');
INSERT INTO users (name, email) VALUES ('Jane Smith', 'jane@example.com');

৫. ডেটাবেস টেস্ট

উপরের জাভা প্রোগ্রামটি চালিয়ে যদি আপনি সঠিকভাবে সংযোগ স্থাপন করতে সক্ষম হন, তবে এটি ডেটাবেস থেকে users টেবিলের সমস্ত রেকর্ড প্রিন্ট করবে।

অন্যান্য ডেটাবেসের সাথে JDBC সংযোগ:

যদি আপনি অন্য কোন ডেটাবেস যেমন PostgreSQL বা Oracle ব্যবহার করেন, তাহলে শুধু JDBC URL এবং ড্রাইভার পরিবর্তন করতে হবে। উদাহরণস্বরূপ:

  • PostgreSQL: jdbc:postgresql://localhost:5432/your_database_name
  • Oracle: jdbc:oracle:thin:@localhost:1521:your_database_name

এভাবে আপনি JDBC ব্যবহার করে Java অ্যাপ্লিকেশন থেকে বিভিন্ন ডেটাবেসের সাথে সংযোগ স্থাপন করতে পারবেন।

Content added By

PreparedStatement Example: Query Execution এর জন্য PreparedStatement ব্যবহার

107
107

PreparedStatement হল JDBC (Java Database Connectivity) API-র একটি ক্লাস যা SQL ইনজেকশন থেকে রক্ষা পাওয়ার জন্য এবং ডেটাবেসে ডাইনামিক কুয়েরি এক্সিকিউট করার জন্য ব্যবহৃত হয়। এটি Statement ইন্টারফেসের একটি উন্নত সংস্করণ, যা SQL কুয়েরি তৈরি এবং এক্সিকিউট করার জন্য ব্যবহৃত হয়। PreparedStatement ব্যবহারের মাধ্যমে SQL কুয়েরি গুলি পুনঃব্যবহারযোগ্য এবং নিরাপদ হয়।

উদাহরণ: PreparedStatement ব্যবহার করে একটি SQL কুয়েরি এক্সিকিউট করা

এই উদাহরণে, আমরা একটি ডাটাবেসে কনেকশন স্থাপন করব, একটি PreparedStatement ব্যবহার করে ডাটাবেসে একটি ইনসার্ট কুয়েরি এক্সিকিউট করব।

ধাপ ১: MySQL ডাটাবেসে কনফিগারেশন তৈরি

প্রথমে, নিশ্চিত হন যে আপনার ডাটাবেস এবং টেবিল প্রস্তুত আছে। ধরুন আমরা একটি Employee টেবিল ব্যবহার করব, যার মধ্যে তিনটি কলাম আছে: id, name, এবং salary

CREATE TABLE Employee (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    salary DECIMAL(10, 2)
);

ধাপ ২: Java কোড উদাহরণ

এখন, নিচের জাভা কোডটি দেখুন যা PreparedStatement ব্যবহার করে ডাটাবেসে ডাটা ইনসার্ট করবে।

import java.sql.*;

public class PreparedStatementExample {
    public static void main(String[] args) {
        // ডাটাবেস কনফিগারেশন
        String url = "jdbc:mysql://localhost:3306/your_database_name"; // আপনার ডাটাবেস URL
        String user = "root"; // ডাটাবেস ইউজার
        String password = "password"; // ডাটাবেস পাসওয়ার্ড

        // SQL কুয়েরি
        String sql = "INSERT INTO Employee (id, name, salary) VALUES (?, ?, ?)";

        // কনেকশন এবং PreparedStatement ডিক্লেয়ারেশন
        try (Connection conn = DriverManager.getConnection(url, user, password);
             PreparedStatement pstmt = conn.prepareStatement(sql)) {
            
            // প্রথম প্রিপেয়ারড স্টেটমেন্টের জন্য প্যারামিটার সেট করা
            pstmt.setInt(1, 101); // id
            pstmt.setString(2, "John Doe"); // name
            pstmt.setBigDecimal(3, new BigDecimal("50000.00")); // salary
            
            // ইনসার্ট কুয়েরি এক্সিকিউট করা
            int rowsAffected = pstmt.executeUpdate();
            
            System.out.println("Rows affected: " + rowsAffected);
            
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

কোডের ব্যাখ্যা:

  1. ডাটাবেস কনফিগারেশন:
    • url: ডাটাবেসের URL, যেখানে localhost:3306 হলো MySQL সার্ভারের লোকাল হোস্ট এবং your_database_name হলো আপনার ডাটাবেসের নাম।
    • user এবং password: আপনার ডাটাবেসের ইউজারনেম এবং পাসওয়ার্ড।
  2. SQL কুয়েরি:
    • "INSERT INTO Employee (id, name, salary) VALUES (?, ?, ?)": এখানে ? হল প্লেসহোল্ডার যা পরবর্তীতে ডাইনামিকভাবে পূর্ণ করা হবে।
  3. PreparedStatement:
    • conn.prepareStatement(sql)-এ sql প্যারামিটার হিসেবে কুয়েরি পাঠানো হয়।
    • pstmt.setInt(1, 101) - প্রথম ? প্লেসহোল্ডারকে ইনপুট দেওয়া হচ্ছে। এখানে 1 হল প্লেসহোল্ডারের অবস্থান (প্রথমটি, দ্বিতীয়টি, তৃতীয়টি ইত্যাদি) এবং 101 হলো তার মান (id)।
    • pstmt.setString(2, "John Doe") - দ্বিতীয় প্লেসহোল্ডার name পূর্ণ করা হচ্ছে।
    • pstmt.setBigDecimal(3, new BigDecimal("50000.00")) - তৃতীয় প্লেসহোল্ডার salary পূর্ণ করা হচ্ছে।
  4. Query Execution:
    • pstmt.executeUpdate() মেথডটি SQL কুয়েরি এক্সিকিউট করে এবং যে সংখ্যক সারি প্রভাবিত হয়েছে তা ফিরিয়ে দেয়।
  5. Exception Handling:
    • SQLException হ্যান্ডলিংয়ের মাধ্যমে ডাটাবেস সম্পর্কিত যে কোনো সমস্যা ধরতে পারেন।

Advantages of PreparedStatement:

  1. SQL Injection Protection: SQL ইনজেকশন আক্রমণের হাত থেকে রক্ষা করে, কারণ ব্যবহারকারীর ইনপুট কুয়েরিতে সরাসরি যুক্ত করা হয় না।
  2. Performance: একটি কুয়েরি একবার কম্পাইল হয়ে গেলে, পরবর্তী এক্সিকিউশনের জন্য এটি পুনঃব্যবহার করা যেতে পারে, ফলে কর্মক্ষমতা বৃদ্ধি পায়।
  3. Code Readability: ডাইনামিকভাবে প্যারামিটার যুক্ত করা সহজ হয়, ফলে কোড আরও পরিষ্কার এবং রক্ষণাবেক্ষণ সহজ হয়।

এই উদাহরণটি দেখায় কিভাবে PreparedStatement ব্যবহার করে ডাটাবেসে ডাটা ইনসার্ট করা যায়। PreparedStatement হল JDBC API-র একটি শক্তিশালী এবং নিরাপদ উপায় যা SQL কুয়েরি এক্সিকিউশনের জন্য ব্যবহৃত হয়।

Content added By

ResultSet Example: ডেটাবেস থেকে ডেটা রিট্রাইভ করা এবং দেখানো

96
96

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

এখানে একটি উদাহরণ দেওয়া হয়েছে যেখানে ডেটাবেস থেকে ডেটা রিট্রাইভ করা হচ্ছে এবং তা কনসোলে দেখানো হচ্ছে।

ধাপ ১: ডেটাবেসে কানেক্ট করা

প্রথমে, ডেটাবেসে কানেক্ট করতে হবে। এতে JDBC (Java Database Connectivity) ব্যবহার করা হয়।

ধাপ ২: SQL কুয়েরি চালানো

Statement বা PreparedStatement ব্যবহার করে SQL কুয়েরি চালানো হয় এবং এর মাধ্যমে ResultSet তৈরি করা হয়।

ধাপ ৩: ডেটা রিট্রাইভ এবং দেখানো

ResultSet অবজেক্টের মাধ্যমে ডেটা রিট্রাইভ করা এবং next() মেথড ব্যবহার করে ডেটার মধ্যে লুপ করা হয়।

উদাহরণ:

ধরা যাক, আপনার ডেটাবেসে একটি employees টেবিল রয়েছে, যার মধ্যে id, name, এবং salary কলাম রয়েছে।

1. ডেটাবেস সংযোগ এবং ResultSet ব্যবহার করে ডেটা রিট্রাইভ করা:

import java.sql.*;

public class DatabaseExample {

    public static void main(String[] args) {
        // ডেটাবেস সংযোগের জন্য ভেরিয়েবল
        String url = "jdbc:mysql://localhost:3306/yourdatabase"; // আপনার ডেটাবেসের URL
        String username = "root"; // আপনার ডেটাবেসের ব্যবহারকারীর নাম
        String password = "password"; // আপনার ডেটাবেসের পাসওয়ার্ড

        // ডেটাবেস কানেকশন এবং ResultSet তৈরি করার জন্য টেকনিক্যাল কোড
        try {
            // ডেটাবেসে কানেক্ট করা
            Connection connection = DriverManager.getConnection(url, username, password);

            // SQL কুয়েরি তৈরি করা
            String sql = "SELECT * FROM employees"; // এখানে 'employees' হল টেবিলের নাম

            // Statement তৈরি করা
            Statement statement = connection.createStatement();

            // SQL কুয়েরি চালানো এবং ফলাফল পাওয়া
            ResultSet resultSet = statement.executeQuery(sql);

            // ডেটা রিট্রাইভ করা এবং দেখানো
            while (resultSet.next()) {
                int id = resultSet.getInt("id");       // 'id' কলাম
                String name = resultSet.getString("name"); // 'name' কলাম
                double salary = resultSet.getDouble("salary"); // 'salary' কলাম
                
                // ডেটা কনসোলে প্রিন্ট করা
                System.out.println("ID: " + id + ", Name: " + name + ", Salary: " + salary);
            }

            // কানেকশন বন্ধ করা
            resultSet.close();
            statement.close();
            connection.close();

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  1. ডেটাবেস কানেকশন: DriverManager.getConnection() ব্যবহার করে ডেটাবেসে কানেক্ট করা হচ্ছে। এখানে আপনি আপনার ডেটাবেসের ইউআরএল, ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রদান করেন।
  2. SQL কুয়েরি চালানো: Statement অবজেক্ট ব্যবহার করে SQL কুয়েরি (এখানে "SELECT * FROM employees") চালানো হয়।
  3. ResultSet ব্যবহার: ResultSet অবজেক্টের মাধ্যমে কুয়েরি থেকে পাওয়া ডেটা একে একে বের করা হয়। resultSet.next() ব্যবহার করে আপনি এক একটি রেকর্ড (রো) অ্যাক্সেস করতে পারেন।
  4. ডেটা রিট্রাইভ করা: resultSet.getInt(), resultSet.getString(), এবং resultSet.getDouble() ব্যবহার করে বিভিন্ন ডেটা টাইপের ডেটা রিট্রাইভ করা হয়।
  5. কানেকশন বন্ধ করা: ব্যবহৃত ResultSet, Statement, এবং Connection অবজেক্টগুলো শেষ হওয়ার পর বন্ধ করা হয়।

ধাপ ৪: ডেটাবেস তৈরি এবং টেবিল যুক্ত করা (MySQL উদাহরণ):

আপনি যদি MySQL ব্যবহার করেন, তবে প্রথমে একটি ডেটাবেস এবং টেবিল তৈরি করতে হবে।

ডেটাবেস তৈরি:

CREATE DATABASE yourdatabase;

টেবিল তৈরি:

USE yourdatabase;

CREATE TABLE employees (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    salary DOUBLE
);

ডেটা ইনসার্ট করা:

INSERT INTO employees (name, salary) VALUES ('John Doe', 50000);
INSERT INTO employees (name, salary) VALUES ('Jane Smith', 60000);

এই উদাহরণটি দেখিয়েছে কিভাবে Java JDBC ব্যবহার করে ডেটাবেস থেকে ডেটা রিট্রাইভ করা এবং ResultSet এর মাধ্যমে ডেটা কনসোলে প্রদর্শন করা হয়। আপনি এই পদ্ধতি ব্যবহার করে ডেটাবেসের সাথে যোগাযোগ করতে এবং প্রয়োজনীয় ডেটা প্রসেস করতে পারবেন।

Content added By

Transaction Management Example: ডেটাবেসে Multiple Queries একত্রে Execute করা

101
101

জাভাতে ট্রানজেকশন ম্যানেজমেন্ট ব্যবহৃত হয় যখন একাধিক ডেটাবেস কুয়েরি একত্রে এক্সিকিউট করতে হয় এবং যদি কোনো কুয়েরি ব্যর্থ হয়, তাহলে পুরো ট্রানজেকশনটি রোলব্যাক করতে হবে। এর ফলে ডেটাবেসে কোনো অসম্পূর্ণ বা ভুল ডেটা প্রবেশ করতে পারে না।

নিচে একটি Transaction Management Example দেওয়া হলো, যেখানে ডেটাবেসে Multiple Queries একত্রে এক্সিকিউট করা হয়েছে এবং commit এবং rollback এর মাধ্যমে ট্রানজেকশন পরিচালনা করা হয়েছে।

উদাহরণ:

import java.sql.*;

public class TransactionManagementExample {
    public static void main(String[] args) {
        // ডেটাবেস কনেকশন সেটআপ
        String url = "jdbc:mysql://localhost:3306/your_database";
        String user = "root";
        String password = "your_password";
        
        Connection connection = null;
        PreparedStatement stmt1 = null;
        PreparedStatement stmt2 = null;

        try {
            // ডেটাবেস কনেকশন তৈরি
            connection = DriverManager.getConnection(url, user, password);
            
            // Auto-commit বন্ধ করা (যতক্ষণ না commit করা হবে, ততক্ষণ পরিবর্তন হবে না)
            connection.setAutoCommit(false);
            
            // প্রথম কুয়েরি
            String query1 = "UPDATE accounts SET balance = balance - 100 WHERE account_id = ?";
            stmt1 = connection.prepareStatement(query1);
            stmt1.setInt(1, 1);  // account_id = 1
            stmt1.executeUpdate();
            
            // দ্বিতীয় কুয়েরি
            String query2 = "UPDATE accounts SET balance = balance + 100 WHERE account_id = ?";
            stmt2 = connection.prepareStatement(query2);
            stmt2.setInt(1, 2);  // account_id = 2
            stmt2.executeUpdate();
            
            // যদি কোনো সমস্যা না হয়, তাহলে ট্রানজেকশন কমিট করা হবে
            connection.commit();
            System.out.println("Transaction Completed Successfully.");
            
        } catch (SQLException e) {
            // যদি কোনো ব্যর্থতা ঘটে, তাহলে রোলব্যাক হবে
            try {
                if (connection != null) {
                    connection.rollback();
                    System.out.println("Transaction Rolled Back due to an error.");
                }
            } catch (SQLException rollbackEx) {
                rollbackEx.printStackTrace();
            }
            e.printStackTrace();
        } finally {
            try {
                // রিসোর্সগুলো বন্ধ করা
                if (stmt1 != null) stmt1.close();
                if (stmt2 != null) stmt2.close();
                if (connection != null) connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

Explanation:

  1. Connection Setup: ডেটাবেসে সংযোগ করার জন্য DriverManager.getConnection() ব্যবহার করা হয়েছে। এখানে your_database, root, এবং your_password আপনার ডেটাবেসের নাম, ব্যবহারকারী নাম এবং পাসওয়ার্ড দ্বারা প্রতিস্থাপন করুন।
  2. Transaction Management:
    • setAutoCommit(false): ডেটাবেসের auto-commit ফিচার বন্ধ করা হয় যাতে যে কোনো কুয়েরি চালানোর পর স্বয়ংক্রিয়ভাবে কমিট না হয়।
    • commit(): যদি সব কুয়েরি সঠিকভাবে এক্সিকিউট হয়, তাহলে connection.commit() কল করা হয়, যা সমস্ত পরিবর্তন ডেটাবেসে স্থায়ী করে।
    • rollback(): যদি কোনো এক্সসেপশন ঘটে, তাহলে connection.rollback() কল করা হয়, যা সমস্ত পরিবর্তন বাতিল করে দেয় এবং ডেটাবেস পূর্বাবস্থায় ফিরে আসে।
  3. Multiple Queries: এখানে দুটি কুয়েরি একযোগে এক্সিকিউট করা হচ্ছে:
    • প্রথম কুয়েরি একটি অ্যাকাউন্টের ব্যালেন্স থেকে ১০০ টাকা বাদ দিচ্ছে।
    • দ্বিতীয় কুয়েরি অন্য একটি অ্যাকাউন্টে ১০০ টাকা যোগ করছে।
  4. Error Handling: যদি কোনো কুয়েরি ব্যর্থ হয়, তাহলে পুরো ট্রানজেকশন রোলব্যাক করা হয় এবং কোন পরিবর্তন ডেটাবেসে সঞ্চিত হয় না।
  5. Resources Cleanup: শেষপর্যন্ত, ডেটাবেস সংযোগ এবং অন্যান্য রিসোর্সগুলো বন্ধ করা হয় যাতে রিসোর্স লিক না ঘটে।

Output Example:

  • যদি সব কুয়েরি সফলভাবে সম্পন্ন হয়, তাহলে আউটপুট হবে:

    Transaction Completed Successfully.
    
  • যদি কোনো কুয়েরি ব্যর্থ হয়, তাহলে আউটপুট হবে:

    Transaction Rolled Back due to an error.
    

Notes:

  • আপনি যদি MySQL ব্যবহার করেন, ড্রাইভার এবং ডেটাবেস URL ঠিকমতো কনফিগার করুন।
  • যদি কোনো কুয়েরি ব্যর্থ হয়, যেমন অ্যাকাউন্টে যথেষ্ট টাকা না থাকা, তাহলে পুরো ট্রানজেকশন রোলব্যাক হবে।
Content added By

Batch Processing Example: একাধিক SQL Statement একত্রে Execute করা

100
100

ব্যাচ প্রসেসিং (Batch Processing) হলো একাধিক SQL স্টেটমেন্ট একসাথে এক্সিকিউট করার একটি কৌশল। এটি ডেটাবেসে বড় পরিমাণ ডেটা আপডেট বা ইনসার্ট করার সময় ব্যবহৃত হয়, যেখানে একাধিক SQL স্টেটমেন্ট একসাথে এক্সিকিউট করে প্রক্রিয়াটিকে দ্রুত করা যায়। নিচে একটি উদাহরণ দেওয়া হলো যেখানে Java ব্যবহার করে একাধিক SQL স্টেটমেন্ট একত্রে এক্সিকিউট করা হয়েছে:

Batch Processing Example in Java

১. ব্যাচ প্রসেসিং প্রোগ্রাম:

এখানে একটি উদাহরণ দেয়া হচ্ছে যেখানে জাভা JDBC ব্যবহার করে MySQL ডেটাবেসে একাধিক SQL স্টেটমেন্ট একসাথে এক্সিকিউট করা হচ্ছে।

import java.sql.*;

public class BatchProcessingExample {
    public static void main(String[] args) {
        // ডেটাবেস সংযোগের জন্য ভেরিয়েবল
        Connection conn = null;
        Statement stmt = null;
        
        try {
            // ডেটাবেস ড্রাইভার লোড
            Class.forName("com.mysql.cj.jdbc.Driver");

            // ডেটাবেস সংযোগ
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb", "root", "password");

            // অটোমেটিক কমিট বন্ধ করা
            conn.setAutoCommit(false);

            // স্টেটমেন্ট অবজেক্ট তৈরি
            stmt = conn.createStatement();

            // ব্যাচের মধ্যে SQL স্টেটমেন্ট যোগ করা
            stmt.addBatch("INSERT INTO employees (id, name, age) VALUES (1, 'John Doe', 30)");
            stmt.addBatch("INSERT INTO employees (id, name, age) VALUES (2, 'Jane Smith', 25)");
            stmt.addBatch("UPDATE employees SET age = 35 WHERE id = 1");
            stmt.addBatch("DELETE FROM employees WHERE id = 2");

            // ব্যাচ এক্সিকিউট করা
            int[] updateCounts = stmt.executeBatch();
            
            // পরিবর্তনগুলি ডেটাবেসে কমিট করা
            conn.commit();

            // ব্যাচ এক্সিকিউশনের ফলাফল দেখানো
            for (int i : updateCounts) {
                System.out.println("Affected rows: " + i);
            }

            System.out.println("ব্যাচ প্রসেসিং সফলভাবে সম্পন্ন হয়েছে।");

        } catch (SQLException se) {
            // SQL এক্সপেকশন হ্যান্ডলিং
            if (conn != null) {
                try {
                    System.out.println("ট্রানজেকশন ব্যর্থ, রোলব্যাক হচ্ছে...");
                    conn.rollback();
                } catch (SQLException re) {
                    re.printStackTrace();
                }
            }
            se.printStackTrace();
        } catch (Exception e) {
            // সাধারণ এক্সপেকশন হ্যান্ডলিং
            e.printStackTrace();
        } finally {
            try {
                // রিসোর্স বন্ধ করা
                if (stmt != null) stmt.close();
                if (conn != null) conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
    }
}

ব্যাচ প্রসেসিং কীভাবে কাজ করে:

  1. ডেটাবেস সংযোগ: প্রথমে ডেটাবেসের সাথে সংযোগ করা হয় DriverManager.getConnection() ব্যবহার করে।
  2. অটোমেটিক কমিট বন্ধ করা: conn.setAutoCommit(false) ব্যবহার করে, অটোমেটিক কমিট বন্ধ করা হয়। অর্থাৎ, SQL স্টেটমেন্টগুলো একসাথে execute হবে এবং পরে আমরা commit() কল করে সেগুলো ডেটাবেসে প্রলম্বিতভাবে সংরক্ষণ করব।
  3. ব্যাচে SQL স্টেটমেন্ট যোগ করা: stmt.addBatch() ব্যবহার করে SQL স্টেটমেন্টগুলো ব্যাচে যোগ করা হয়।
  4. ব্যাচ execute করা: stmt.executeBatch() কল করে ব্যাচ প্রসেসিং কার্যকর করা হয়।
  5. কমিট করা: সমস্ত স্টেটমেন্ট সফলভাবে execute হলে conn.commit() ব্যবহার করে ডেটাবেসে পরিবর্তনগুলি সংরক্ষণ করা হয়।
  6. রোলব্যাক: যদি কোনো ত্রুটি ঘটে, তবে conn.rollback() ব্যবহার করে সমস্ত পরিবর্তন বাতিল করা হয়।

ব্যাচ প্রসেসিং এর সুবিধা:

  1. পারফরম্যান্স বৃদ্ধি: একাধিক SQL স্টেটমেন্ট একসাথে execute করা, একাধিক রাউন্ড-ট্রিপের পরিবর্তে, পারফরম্যান্সে উন্নতি আনে।
  2. ট্রানজেকশন কন্ট্রোল: সমস্ত SQL স্টেটমেন্ট একসাথে একটি ট্রানজেকশনের মধ্যে execute হয়, যা এককভাবে commit বা rollback করা যায়।

ব্যাচ প্রসেসিং এর ব্যবহার:

  • ডেটা ইনসার্ট / আপডেট: যখন অনেক রেকর্ড একসাথে ডেটাবেসে ইনসার্ট বা আপডেট করতে হয়।
  • লজিক্যাল অপারেশন: একাধিক SQL অপারেশন একসাথে সম্পন্ন করার জন্য।

এভাবে আপনি Java JDBC ব্যবহার করে একাধিক SQL স্টেটমেন্ট ব্যাচে execute করতে পারেন এবং আপনার ডেটাবেস অপারেশনগুলোকে আরও দক্ষ ও দ্রুততর করতে পারেন।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion