Sobes.tech
Junior

PreparedStatement ile Statement arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Statement, statik SQL sorgularını çalıştırmak için kullanılır. Her çalıştırmada derlenir. PreparedStatement, parametreli SQL sorgularını çalıştırmak için kullanılır. Sorgu, PreparedStatement nesnesi oluşturulurken bir kez derlenir ve farklı parametre değerleriyle tekrar tekrar çalıştırılabilir.

Ana farklar:

Özellik Statement PreparedStatement
Performans Her çalıştırmada derlenir. Bir kez derlenir. Tekrar kullanımlarda daha verimlidir.
Güvenlik String birleştirme yoluyla SQL enjeksiyonlarına açıktır. Parametrelerin otomatik kaçışıyla SQL enjeksiyonlarına karşı korur.
Parametreler Parametreli sorguları desteklemez. Parametreli sorguları (?) destekler.
Okunabilirlik Çok sayıda veriyle çalışırken daha az okunabilir. Parametrelerle çalışırken daha okunabilir.

Statement kullanımı örneği:

// SQL enjeksiyonlarına açık örnek
String user = "admin";
String pass = "' OR '1'='1"; // SQL enjeksiyonu örneği
String query = "SELECT * FROM users WHERE username = '" + user + "' AND password = '" + pass + "'";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(query);

PreparedStatement kullanımı örneği:

// SQL enjeksiyonlarına karşı korumalı örnek
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();