PreparedStatement ps = null:
try {
ps = c.prepareStatementC'INSERT INTO authors VALUES (?. ?. ?)");
ps.setlntd. 495):
ps.setString(2. "Light-Williams"):
ps.setStringO. "Corwin"): } catch (SQLException se) {
System.out.printlnC"We got an exception while preparing a statement:" +
"Probably bad SQL."):
se.printStackTrace();
System.exit(l);
}
try {
ps.executeUpdate():
} catch (SQLException se) {
System.out.printlnC'We got an exception while executing an update:" +
"possibly bad SQL. or check the connection."):
se.pnntStackTrace():
System.exit(l):
}
Как видно из листинга, подготовленная команда выглядит вполне привычно, разве что все переменные величины заменяются в ней вопросительными знаками (?). Присваивание выполняется методами класса PreparedStatement (setlnt, setString и т. д.). Выбор метода для каждого поля зависит от типа данных этого поля.
Объекты PreparedStatement удобны тем, что они обеспечивают автоматическое преобразование типов данных Java в типы SQL. Например, при переходе к типу text вам не нужно беспокоиться об экранировании символов или кавычках.
Обратите внимание: первый аргумент метода set идентифицирует номер позиции переменной (вопросительного знака), которой присваивается значение. Единица означает первый вопросительный знак, двойка — второй и т. д.
Другая сильная сторона PreparedStatement связана с тем, что объект можно снова и снова использовать с новыми данными, не создавая нового объекта Statement для каждого набора параметров. Конечно, такой подход более эффективен, поскольку он ограничивается созданием одного объекта, а новые значения переменных задаются методами set.