Data Insert করা (INSERT Operation)

CRUD Operations in Java এবং MySQL - জাভা মাইএসকিউএল (Java MySQL) - Database Tutorials

263

MySQL ডেটাবেসে ডেটা ইনসার্ট করতে JDBC (Java Database Connectivity) ব্যবহার করা হয়। INSERT SQL ক্যোয়ারি দিয়ে আপনি ডেটাবেসের টেবিলে নতুন রেকর্ড ইনসার্ট করতে পারেন। JDBC API এর মাধ্যমে এই অপারেশনটি সম্পাদন করতে আপনাকে Connection, PreparedStatement বা Statement অবজেক্ট ব্যবহার করতে হবে।

নিচে INSERT Operation সম্পাদন করার জন্য বিস্তারিত উদাহরণ দেওয়া হলো।


1. PreparedStatement ব্যবহার করে Data Insert করা

PreparedStatement ব্যবহারের প্রধান সুবিধা হল এটি SQL ইনজেকশন থেকে সুরক্ষা প্রদান করে এবং একই ক্যোয়ারি পুনরায় চালানোর ক্ষেত্রে কর্মক্ষমতা বৃদ্ধি করে। এটি ব্যবহার করা সবচেয়ে নিরাপদ এবং কার্যকর উপায়।

উদাহরণ:

import java.sql.*;

public class InsertDataExample {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement pstmt = null;

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

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

            // SQL ক্যোয়ারি তৈরি (PreparedStatement ব্যবহার করে)
            String sql = "INSERT INTO Employees (Name, Age, Address) VALUES (?, ?, ?)";

            // PreparedStatement তৈরি
            pstmt = conn.prepareStatement(sql);

            // ডেটা সেট করা
            pstmt.setString(1, "John Doe");  // Name কলামে "John Doe" ইনসার্ট করা
            pstmt.setInt(2, 30);  // Age কলামে 30 ইনসার্ট করা
            pstmt.setString(3, "123 Main St, Springfield");  // Address কলামে ঠিকানা ইনসার্ট করা

            // ক্যোয়ারি চালানো
            pstmt.executeUpdate();
            System.out.println("Data inserted successfully.");

        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            try {
                // সংযোগ বন্ধ করা
                if (pstmt != null) pstmt.close();
                if (conn != null) conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
    }
}

এই উদাহরণে:

  • INSERT INTO Employees (Name, Age, Address) VALUES (?, ?, ?) SQL ক্যোয়ারিতে ? হল প্লেসহোল্ডার যা পরবর্তীতে pstmt.setString() এবং pstmt.setInt() এর মাধ্যমে ভ্যালু দিয়ে পূর্ণ করা হয়।
  • pstmt.executeUpdate() ব্যবহার করে ডেটা ইনসার্ট করা হয়।

2. Statement ব্যবহার করে Data Insert করা

যদি আপনি ডাইনামিকভাবে SQL ক্যোয়ারি তৈরি না করতে চান এবং সরাসরি স্ট্যাটিক SQL ক্যোয়ারি চালাতে চান, তবে Statement ব্যবহার করতে পারেন। তবে, এটি SQL ইনজেকশনের ঝুঁকি তৈরি করতে পারে, তাই এটি নিরাপত্তা কারণে PreparedStatement এর তুলনায় কম ব্যবহার করা হয়।

উদাহরণ:

import java.sql.*;

public class InsertDataWithStatement {
    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");

            // SQL ক্যোয়ারি তৈরি
            String sql = "INSERT INTO Employees (Name, Age, Address) VALUES ('Alice Johnson', 28, '456 Elm St, Austin')";

            // Statement তৈরি এবং ক্যোয়ারি এক্সিকিউট করা
            stmt = conn.createStatement();
            stmt.executeUpdate(sql);
            System.out.println("Data inserted successfully.");

        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            try {
                // সংযোগ বন্ধ করা
                if (stmt != null) stmt.close();
                if (conn != null) conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
    }
}

এই উদাহরণে:

  • INSERT INTO Employees (Name, Age, Address) VALUES ('Alice Johnson', 28, '456 Elm St, Austin') একটি স্ট্যাটিক SQL ক্যোয়ারি।
  • stmt.executeUpdate(sql) এর মাধ্যমে SQL ক্যোয়ারি এক্সিকিউট করা হয়েছে।

3. Batch Insert (একাধিক রেকর্ড ইনসার্ট করা)

যদি আপনাকে একাধিক রেকর্ড ইনসার্ট করতে হয়, তবে Batch Insert পদ্ধতি ব্যবহার করা যেতে পারে, যা একাধিক ইনসার্ট ক্যোয়ারি একসাথে এক্সিকিউট করতে সাহায্য করে এবং কার্যক্ষমতাও বাড়ায়।

উদাহরণ:

import java.sql.*;

public class BatchInsertExample {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement pstmt = null;

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

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

            // SQL ক্যোয়ারি তৈরি (PreparedStatement ব্যবহার করে)
            String sql = "INSERT INTO Employees (Name, Age, Address) VALUES (?, ?, ?)";
            pstmt = conn.prepareStatement(sql);

            // Batch Insert করতে ডেটা সেট করা
            pstmt.setString(1, "David Smith");
            pstmt.setInt(2, 35);
            pstmt.setString(3, "789 Oak St, Boston");
            pstmt.addBatch();  // প্রথম রেকর্ড

            pstmt.setString(1, "Eva Green");
            pstmt.setInt(2, 22);
            pstmt.setString(3, "101 Pine St, New York");
            pstmt.addBatch();  // দ্বিতীয় রেকর্ড

            pstmt.setString(1, "George Brown");
            pstmt.setInt(2, 45);
            pstmt.setString(3, "202 Maple St, Chicago");
            pstmt.addBatch();  // তৃতীয় রেকর্ড

            // Batch execute করা
            pstmt.executeBatch();
            System.out.println("Batch data inserted successfully.");

        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            try {
                // সংযোগ বন্ধ করা
                if (pstmt != null) pstmt.close();
                if (conn != null) conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
    }
}

এই উদাহরণে:

  • addBatch() মেথড ব্যবহার করে একাধিক রেকর্ড একসাথে ইনসার্ট করা হয়েছে।
  • executeBatch() মেথড একাধিক ইনসার্ট ক্যোয়ারি একসাথে কার্যকর করে।

4. Auto-generated Keys ব্যবহার করে Data Insert করা

যখন আপনি একটি টেবিলের প্রাইমারি কিতে AUTO_INCREMENT ব্যবহার করছেন, তখন ডেটা ইনসার্ট করার পর সেই নতুন প্রাইমারি কী (ID) গ্রহণ করতে পারেন। এটি Statement.RETURN_GENERATED_KEYS ফ্ল্যাগ ব্যবহার করে করা হয়।

উদাহরণ:

import java.sql.*;

public class InsertWithGeneratedKeys {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;

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

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

            // SQL ক্যোয়ারি তৈরি (PreparedStatement ব্যবহার করে)
            String sql = "INSERT INTO Employees (Name, Age, Address) VALUES (?, ?, ?)";
            pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

            // ডেটা সেট করা
            pstmt.setString(1, "Sophia Clark");
            pstmt.setInt(2, 26);
            pstmt.setString(3, "303 Birch St, Seattle");

            // ক্যোয়ারি এক্সিকিউট করা
            pstmt.executeUpdate();

            // স্বয়ংক্রিয়ভাবে তৈরি করা প্রাইমারি কিডি পাওয়া
            rs = pstmt.getGeneratedKeys();
            if (rs.next()) {
                int generatedId = rs.getInt(1);
                System.out.println("Inserted record's ID: " + generatedId);
            }

        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            try {
                // সংযোগ বন্ধ করা
                if (rs != null) rs.close();
                if (pstmt != null) pstmt.close();
                if (conn != null) conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
    }
}

এই উদাহরণে:

  • Statement.RETURN_GENERATED_KEYS ফ্ল্যাগ ব্যবহার করে ইনসার্টের পর তৈরি হওয়া প্রাইমারি কী
Content added By
Promotion

Are you sure to start over?

Loading...