Sobes.tech
Junior

PreparedStatement və Statement arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Statement statik SQL sorğularını yerinə yetirmək üçün istifadə olunur. Hər icra zamanı tərtib olunur. PreparedStatement parametrli SQL sorğularını yerinə yetirmək üçün istifadə olunur. Sorğu PreparedStatement obyektinin yaradılması zamanı bir dəfə tərtib olunur və müxtəlif parametr dəyərləri ilə çoxsaylı icra edilə bilər.

Əsas fərqlər:

Xüsusiyyət Statement PreparedStatement
Performans Hər icra zamanı tərtib olunur. Bir dəfə tərtib olunur. Təkrar istifadə üçün daha səmərəlidir.
Təhlükəsizlik Stringlərin birləşdirilməsi ilə SQL injection-ə açıqdı. Parametrlərin avtomatik qaçışması ilə SQL injection-ə qarşı qoruyur.
Parametrlər Parametrli sorğuları dəstəkləmir. Parametrli sorğuları (?) dəstəkləyir.
Oxumaq asanlığı Çox məlumatla işləyərkən daha az oxuna bilər. Parametrlərlə işləyərkən daha oxunaqlıdır.

Statement istifadə nümunəsi:

// SQL injection-ə açıq nümunə
String user = "admin";
String pass = "' OR '1'='1"; // SQL injection nümunəsi
String query = "SELECT * FROM users WHERE username = '" + user + "' AND password = '" + pass + "'";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(query);

PreparedStatement istifadə nümunəsi:

// SQL injection-ə qarşı qorunan nümunə
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();