Sobes.tech
Junior

PreparedStatement va Statement o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

Statement statik SQL so'rovlarni bajarish uchun ishlatiladi. U har safar bajarilganda kompilyatsiya qilinadi. PreparedStatement parametrli SQL so'rovlarini bajarish uchun ishlatiladi. So'rov PreparedStatement ob'ekti yaratilganda bir marta kompilyatsiya qilinadi va turli parametr qiymatlari bilan takroran bajarilishi mumkin.

Asosiy farqlar:

Xususiyat Statement PreparedStatement
Ishlash tezligi Har safar bajarilganda kompilyatsiya qilinadi. Bir marta kompilyatsiya qilinadi. Takror foydalanishda samaraliroq.
Xavfsizlik Stringlarni qo'shish orqali SQL injektsiyalariga ochiq. Parametrlarning avtomatik qochirilishi bilan SQL injektsiyalaridan himoya qiladi.
Parametrlar Parametrli so'rovlarni qo'llab-quvvatlamaydi. Parametrli so'rovlarni (?) qo'llab-quvvatlaydi.
O'qish osonligi Ko'p ma'lumot bilan ishlashda kamroq o'qilishi mumkin. Parametrlar bilan ishlashda ko'proq o'qilishi mumkin.

Statement dan foydalanish misoli:

// SQL injektsiyasiga ochiq misol
String user = "admin";
String pass = "' OR '1'='1"; // SQL injektsiya misoli
String query = "SELECT * FROM users WHERE username = '" + user + "' AND password = '" + pass + "'";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(query);

PreparedStatement dan foydalanish misoli:

// SQL injektsiyasidan himoyalangan misol
String user = "admin";
String pass = "' OR '1'='1";
String query = "SELECT * FROM users WHERE username = ? AND password = ?";
PreparedStatement pstmt = connection.prepareStatement(query);
pstmt.setString(1, user);
pstmt.setString(2, pass);
ResultSet rs = pstmt.executeQuery();