কম্পিউটার টিউটোরিয়াল

MySQL-এ JDBC ব্যবহার করে ব্যাকস্ল্যাশ ইস্কেপ করার উপায়

JDBC-এ MySQL-এ ডেটা ইনসার্ট করার সময় ব্যাকস্ল্যাশ (\) সঠিকভাবে হ্যান্ডল করতে PreparedStatement ব্যবহার করা সেরা অনুশীলন। এটি SQL ইনজেকশন প্রতিরোধ করতেও সাহায্য করে।

টেবিল তৈরি

mysql> CREATE TABLE DemoTable1904 (
    ClientId INT,
    ClientName VARCHAR(20),
    ClientAge INT
);

Java কোড: PreparedStatement ব্যবহার

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class EscapeBackslashesDemo {
    public static void main(String[] args) {
        Connection con = null;
        PreparedStatement ps = null;
        try {
            // ডাটাবেস সংযোগ
            con = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/web?useSSL=false", 
                "root", "123456"
            );
            
            // প্যারামিটারাইজড কোয়েরি
            String query = "INSERT INTO DemoTable1904(ClientId, ClientName, ClientAge) VALUES (?, ?, ?)";
            ps = con.prepareStatement(query);
            
            // মান সেট করা (ব্যাকস্ল্যাশ সহ স্ট্রিংও সুরক্ষিতভাবে যাবে)
            ps.setInt(1, 1001);
            ps.setString(2, "David Miller"); // এখানে ব্যাকস্ল্যাশ থাকলে JDBC স্বয়ংক্রিয় ইস্কেপ করবে
            ps.setInt(3, 35);
            
            ps.executeUpdate();
            System.out.println("One row is inserted.....");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // রিসোর্স বন্ধ করা ভালো অভ্যাস
            try { if (ps != null) ps.close(); } catch (Exception ignored) {}
            try { if (con != null) con.close(); } catch (Exception ignored) {}
        }
    }
}

ফলাফল যাচাই

mysql> SELECT * FROM DemoTable1904;

আউটপুট:

+----------+--------------+-----------+
| ClientId | ClientName   | ClientAge |
+----------+--------------+-----------+
|     1001 | David Miller |        35 |
+----------+--------------+-----------+
1 row in set (0.00 sec)

কেন PreparedStatement?

  • ব্যাকস্ল্যাশ, কোটেশন, спеসিয়াল ক্যারেক্টার স্বয়ংক্রিয়ভাবে ইস্কেপ হয়।
  • SQL ইনজেকশন আক্রমণ থেকে রক্ষা পায়।
  • কোয়েরি প্ল্যান ক্যাশে থাকে, পারফরম্যান্স বাড়ে।

নোট

যদি কখনো ম্যানুয়ালি স্ট্রিং তৈরি করতে হয়, তবে connection.escapeString() বা StringEscapeUtils ব্যবহার করুন, কিন্তু PreparedStatement সর্বোত্তম।

  1. Java ব্যবহার করে MySQL ডেটাবেসে ডেটা আপডেট করা

  2. Java ব্যবহার করে MySQL ডেটাবেস থেকে ডেটা ডিলিট করা

  3. MySQL-এ জিপ কোডে '0' দিয়ে ফ্রন্ট প্যাডিং করা

  4. PHP এবং MySQL-এ 'Boolean' মান হ্যান্ডেল করার পদ্ধতি