MySQL में JDBC का उपयोग करते समय बैकस्लैश (`\`) जैसे विशेष वर्णों को संभालने का सबसे सुरक्षित और अनुशंसित तरीका **PreparedStatement** का उपयोग करना है। यह SQL इंजेक्शन को रोकता है और स्वचालित रूप से एस्केप सीक्वेंस को सही ढंग से संभालता है।
उदाहरण: PreparedStatement के साथ बैकस्लैश हैंडलिंग
सबसे पहले एक डेमो टेबल बनाएं:
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"); // बैकस्लैश वाले स्ट्रिंग भी सुरक्षित हैं
ps.setInt(3, 35);
ps.executeUpdate();
System.out.println("One row is inserted.....");
} catch (Exception e) {
e.printStackTrace();
}
}
}
टेबल रिकॉर्ड चेक करें:
mysql> SELECT * FROM DemoTable1904; +----------+--------------+-----------+ | ClientId | ClientName | ClientAge | +----------+--------------+-----------+ | 1001 | David Miller | 35 | +----------+--------------+-----------+
PreparedStatement क्यों बेहतर है?
- स्वचालित एस्केपिंग: JDBC ड्राइवर स्वचालित रूप से विशेष वर्णों को एस्केप करता है।
- SQL इंजेक्शन सुरक्षा: पैरामीटराइज़्ड क्वेरी इंजेक्शन अटैक को रोकती हैं।
- पढ़ने योग्य कोड: क्वेरी और डेटा अलग-अलग रहते हैं।
- पुन: उपयोग योग्य: एक ही स्टेटमेंट को अलग-अलग पैरामीटर्स के साथ कई बार एक्ज़ीक्यूट कर सकते हैं।
नोट: यदि आप बैकस्लैश वाले स्ट्रिंग लिटरल डाल रहे हैं (जैसे `C:\Users\Name`), तो Java स्ट्रिंग में डबल बैकस्लैश (`\\`) लिखें या PreparedStatement के `setString()` का उपयोग करें जो इसे स्वचालित रूप से संभालता है।