Шифрование и секретность в Linux

         

Использование подготовленных команд в JDBC



Листинг 12.6. Использование подготовленных команд в JDBC

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.



Содержание раздела