Data Update করা (UPDATE Operation)

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

323

UPDATE অপারেশন ব্যবহার করে MySQL ডেটাবেসে বিদ্যমান রেকর্ডের মান পরিবর্তন করা যায়। Java তে UPDATE স্টেটমেন্ট ব্যবহার করার জন্য PreparedStatement সবচেয়ে বেশি নিরাপদ এবং কার্যকর পদ্ধতি। এটি SQL ইনজেকশন থেকে রক্ষা করে এবং ডেটা আপডেটের সময় দ্রুত কার্যকর হয়।

নিচে UPDATE অপারেশন কিভাবে Java MySQL এর মাধ্যমে করা যায়, তা বিস্তারিতভাবে আলোচনা করা হল।


1. UPDATE স্টেটমেন্ট ব্যবহার করার সাধারণ পদ্ধতি

1.1 PreparedStatement ব্যবহার করে ডেটা আপডেট

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

import java.sql.*;

public class UpdateDataExample {
    public static void main(String[] args) {
        try {
            // JDBC ড্রাইভার লোড করা
            Class.forName("com.mysql.cj.jdbc.Driver");

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

            // SQL UPDATE স্টেটমেন্ট প্রস্তুত করা
            String sql = "UPDATE users SET name = ?, age = ? WHERE id = ?";
            PreparedStatement pstmt = conn.prepareStatement(sql);

            // প্লেসহোল্ডারে মান সেট করা
            pstmt.setString(1, "John Doe");  // name কলামে মান সেট করা
            pstmt.setInt(2, 30);             // age কলামে মান সেট করা
            pstmt.setInt(3, 1);              // id কলামে মান সেট করা

            // UPDATE স্টেটমেন্ট এক্সিকিউট করা
            int rowsAffected = pstmt.executeUpdate();

            // আপডেট হওয়া রেকর্ডের সংখ্যা প্রিন্ট করা
            System.out.println("Rows affected: " + rowsAffected);

            // রিসোর্স বন্ধ করা
            pstmt.close();
            conn.close();

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

এখানে:

  • pstmt.setString(1, "John Doe"): প্রথম প্লেসহোল্ডার (name কলাম) এর জন্য নতুন মান প্রদান করা হচ্ছে।
  • pstmt.setInt(2, 30): দ্বিতীয় প্লেসহোল্ডার (age কলাম) এর জন্য নতুন মান প্রদান করা হচ্ছে।
  • pstmt.setInt(3, 1): তৃতীয় প্লেসহোল্ডার (id কলাম) এর জন্য যেই রেকর্ডটি আপডেট করতে চান, তার আইডি প্রদান করা হচ্ছে।
  • executeUpdate(): এটি SQL UPDATE স্টেটমেন্ট এক্সিকিউট করে এবং আপডেট হওয়া রেকর্ডের সংখ্যা ফেরত দেয়।

2. UPDATE স্টেটমেন্টের ব্যাখ্যা

UPDATE users 
SET name = 'John Doe', age = 30 
WHERE id = 1;
  • UPDATE users: এখানে users টেবিলটি নির্দিষ্ট করা হয়েছে, যার মধ্যে আপডেট করতে হবে।
  • SET name = 'John Doe', age = 30: name এবং age কলামের মান নতুনভাবে আপডেট করা হচ্ছে।
  • WHERE id = 1: এটি একটি শর্ত যা বলে যে শুধুমাত্র id কলামের মান ১ যাদের তাদের রেকর্ড আপডেট করা হবে।

যদি WHERE শর্তটি না দেওয়া হয়, তবে সকল রেকর্ড আপডেট হয়ে যাবে, যা সাধারণত অবাঞ্ছিত ফলাফল হতে পারে। তাই সব সময় WHERE শর্ত ব্যবহার করা উচিত।


3. PreparedStatement এবং Statement এর মধ্যে পার্থক্য

বিষয়StatementPreparedStatement
নিরাপত্তাSQL ইনজেকশন এর ঝুঁকি রয়েছেSQL ইনজেকশন থেকে সুরক্ষা নিশ্চিত করা
পারফরম্যান্সকোয়েরি প্রতিবার নতুনভাবে কম্পাইল হয়কোয়েরি একবার কম্পাইল হয়ে পুনরায় ব্যবহার করা যায়
ডাইনামিক কোয়েরিএকবারে স্ট্যাটিক কোয়েরি ব্যবহৃত হয়কোয়েরি ভিতরে ডাইনামিক প্লেসহোল্ডার ব্যবহার করা যায়

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


4. Multiple Rows Update (একাধিক রেকর্ড আপডেট করা)

যদি একাধিক রেকর্ড আপডেট করতে চান, তবে আপনি batch update পদ্ধতি ব্যবহার করতে পারেন, যা একাধিক আপডেট অপারেশন এক সাথে এক্সিকিউট করবে।

4.1 Batch Update Example

import java.sql.*;

public class BatchUpdateExample {
    public static void main(String[] args) {
        try {
            // JDBC ড্রাইভার লোড করা
            Class.forName("com.mysql.cj.jdbc.Driver");

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

            // SQL UPDATE স্টেটমেন্ট প্রস্তুত করা
            String sql = "UPDATE users SET age = ? WHERE id = ?";
            PreparedStatement pstmt = conn.prepareStatement(sql);

            // ব্যাচে প্রথম আপডেট অপারেশন যোগ করা
            pstmt.setInt(1, 35);  // age কলামে 35 সেট করা
            pstmt.setInt(2, 1);   // id কলামে 1 সেট করা
            pstmt.addBatch();

            // ব্যাচে দ্বিতীয় আপডেট অপারেশন যোগ করা
            pstmt.setInt(1, 40);  // age কলামে 40 সেট করা
            pstmt.setInt(2, 2);   // id কলামে 2 সেট করা
            pstmt.addBatch();

            // ব্যাচ এক্সিকিউট করা
            int[] updateCounts = pstmt.executeBatch();

            // আপডেট হওয়া রেকর্ডের সংখ্যা প্রিন্ট করা
            System.out.println("Batch update completed. Rows affected: " + updateCounts.length);

            // রিসোর্স বন্ধ করা
            pstmt.close();
            conn.close();

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

এখানে:

  • pstmt.addBatch(): একাধিক আপডেট অপারেশন ব্যাচে যোগ করা হচ্ছে।
  • pstmt.executeBatch(): ব্যাচে থাকা সমস্ত আপডেট অপারেশন একযোগে এক্সিকিউট করা হচ্ছে।

সারাংশ

Java MySQL-এ UPDATE অপারেশন ব্যবহার করে ডেটাবেসের রেকর্ডের মান পরিবর্তন করা যায়। PreparedStatement এর মাধ্যমে আপনি SQL কোয়েরি ডাইনামিকভাবে পরিচালনা করতে পারেন এবং এটি SQL ইনজেকশন থেকে সুরক্ষা নিশ্চিত করে। একাধিক রেকর্ড একসাথে আপডেট করার জন্য batch update পদ্ধতি ব্যবহার করা হয়, যা পারফরম্যান্সে উন্নতি সাধন করে। Statement সাধারণত ছোট এবং স্ট্যাটিক কোয়েরি এক্সিকিউট করতে ব্যবহৃত হলেও, PreparedStatement নিরাপদ, দ্রুত এবং পারফরম্যান্সের জন্য উপযোগী।


Content added By
Promotion

Are you sure to start over?

Loading...