Sobes.tech
Junior

Wat is het verschil tussen PreparedStatement en Statement?

sobes.tech AI

Antwoord van AI

Statement wordt gebruikt voor het uitvoeren van statische SQL-query's. Het wordt telkens gecompileerd bij uitvoering. PreparedStatement wordt gebruikt voor het uitvoeren van parametrische SQL-query's. De query wordt één keer gecompileerd bij het aanmaken van het PreparedStatement-object en kan meerdere keren worden uitgevoerd met verschillende parameterwaarden.

Belangrijkste verschillen:

Functie Statement PreparedStatement
Prestaties Wordt bij elke uitvoering gecompileerd. Wordt één keer gecompileerd. Efficiënter bij hergebruik.
Veiligheid Gevoelig voor SQL-injecties door stringconcatenatie. Beschermt tegen SQL-injecties door automatische parameterescaping.
Parameters Ondersteunt geen parametrische query's. Ondersteunt parametrische query's (?).
Leesbaarheid Minder leesbaar bij grote hoeveelheden data. Leesbaarder bij gebruik van parameters.

Voorbeeld van gebruik van Statement:

// Voorbeeld met Statement (gevoelig voor SQL-injecties)
String user = "admin";
String pass = "' OR '1'='1"; // SQL-injectie voorbeeld
String query = "SELECT * FROM users WHERE username = '" + user + "' AND password = '" + pass + "'";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(query);

Voorbeeld van gebruik van PreparedStatement:

// Voorbeeld met PreparedStatement (beschermd tegen SQL-injecties)
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();