Sobes.tech
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.