CSS-селектор & ldquo; (A или B) и C & rdquo ;?

PreparedStatements - это путь, потому что они делают невозможным SQL-инъекцию. Вот простой пример ввода пользователя в качестве параметров:

public insertUser(String name, String email) {
   Connection conn = null;
   PreparedStatement stmt = null;
   try {
      conn = setupTheDatabaseConnectionSomehow();
      stmt = conn.prepareStatement("INSERT INTO person (name, email) values (?, ?)");
      stmt.setString(1, name);
      stmt.setString(2, email);
      stmt.executeUpdate();
   }
   finally {
      try {
         if (stmt != null) { stmt.close(); }
      }
      catch (Exception e) {
         // log this error
      }
      try {
         if (conn != null) { conn.close(); }
      }
      catch (Exception e) {
         // log this error
      }
   }
}

Независимо от того, какие символы имеют имя и адрес электронной почты, эти символы будут помещены непосредственно в базу данных. Они никак не влияют на инструкцию INSERT.

Существуют разные методы набора для разных типов данных, которые вы используете, зависит от того, какие поля вашей базы данных. Например, если в базе данных имеется столбец INTEGER, вы должны использовать метод setInt. В документации PreparedStatement перечислены все доступные методы настройки и получения данных.

150
задан Cokegod 22 September 2011 в 15:35
поделиться