Sobes.tech
Junior — Middle

Каква е разликата между използването на PreparedStatement и CallableStatement при работа с бази данни?

sobes.tech AI

Отговор от AI

Основната разлика между PreparedStatement и CallableStatement в Java при работа с бази данни:

  • PreparedStatement се използва за изпълнение на предварително компилирани SQL заявки (обикновено SELECT, INSERT, UPDATE, DELETE). Позволява безопасно поставяне на параметри, предотвратявайки SQL инжекции.

  • CallableStatement е предназначен за извикване на съхранени процедури или функции, дефинирани в базата данни. Поддържа както входни, така и изходни параметри.

Пример за използване на PreparedStatement:

String sql = "SELECT * FROM users WHERE id = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setInt(1, 10);
ResultSet rs = ps.executeQuery();

Пример за използване на CallableStatement:

CallableStatement cs = connection.prepareCall("{call getUserById(?)}");
cs.setInt(1, 10);
ResultSet rs = cs.executeQuery();

Така PreparedStatement е за обикновени параметризирани заявки, а CallableStatement — за извикване на процедури в базата данни.