Junior
Aký je rozdiel medzi Statement a PreparedStatement v Jave?
sobes.tech AI
Odpoveď od AI
Statement a PreparedStatement sú JDBC rozhrania na vykonávanie SQL dopytov, ale líšia sa spôsobom práce a použitím.
- Statement sa používa na vykonávanie jednoduchých SQL dopytov bez parametrov. Dopyty sa odovzdávajú vo forme reťazcov, ktoré sa kompilujú a vykonávajú sa zakaždým nanovo.
- PreparedStatement umožňuje vytvárať parametrizované dopyty s miestami pre parametre (napríklad
?), ktoré sa skompilujú raz a môžu sa vykonávať viackrát s rôznymi parametrami.
Výhody PreparedStatement:
- Bezpečnosť: zabraňuje SQL injekciám, pretože parametre sa odovzdávajú oddelene a neovplyvňujú štruktúru dopytu.
- Výkon: dopyt sa skompiluje raz, čo zrýchľuje opakované vykonávanie.
Príklad použitia PreparedStatement:
String sql = "SELECT * FROM users WHERE email = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, "user@example.com");
ResultSet rs = ps.executeQuery();
Naopak u Statement:
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM users WHERE email = 'user@example.com'");
Odporúča sa používať PreparedStatement pre dynamické dopyty s parametrami a na zvýšenie bezpečnosti a výkonu.