Иллюстрированный самоучитель по PostgreSQL

Использование JDBC

В этом разделе рассматриваются основные принципы использования JDBC, некоторые технические аспекты, потенциальные проблемы и т. д. За дополнительными сведениями обращайтесь на сайт JDBC (http://java.sun.com/products/jdbc/), на котором всегда приводится самая свежая информация и имеются ссылки на множество полезных ресурсов. Подробные описания конкретных классов, методов и полей приведены в документации API, входящей в комплект поставки JDK. Обращайтесь к пакету java.sql.

Классы JDBC представляют основные компоненты взаимодействия программы с SQL. У всех основных классов JDBC – Connection, Statement, ResultSet, Blob и Clob – имеются прямые аналоги в SQL. Кроме того, в JDBC включены вспомогательные классы – например, классы ResultsSetMetaData и DatabaseMetaData предназначены для работы с метаданными. В частности, они используются для получения информации о возможностях базы данных, для проверки типа результата запроса, в процессе отладки и просто в ситуациях, когда вы не располагаете информацией о данных, с которыми работаете.

Интерфейс JDBC в PostgreSQL также содержит классы для работы с нестандартными расширениями PostgreSQL. К их числу относятся Fastpath, геометрические типы, большие объекты и классы, упрощающие сериализацию объектов Java в базе данных.

Принципы использования JDBC

В листинге 12.2 приведен пример использования объекта Connection, представляющего физическое подключение к базе данных. Объект Connection требуется для создания объектов Statement, при помощи которых в JDBC базе данных передаются команды SQL.

Существует три разновидности объектов Statement: базовый класс Statement, классы PreparedStatement и CallableStatement.

Объект Statement создается методом createStatement (листинг 12.3).

Листинг 12.3. Создание объекта Statement.

Statement s = c.createStatement():

В листинге 12.3 создается объект класса Statement с именем s для объекта Connection с именем с. Далее созданный объект Statement может использоваться для выполнения запросов и обновлений базы данных.

В классе Statement особенно важны два метода. Первый, executeQuery, получает один аргумент (код выполняемой команды SQL) и возвращает объект класса ResultSet, о котором речь пойдет ниже. Метод executeQuery предназначен для выполнения команд, возвращающих наборы данных, например запросов SELECT. Возвращаемый объект ResultSet представляет данные, полученные в ходе запроса.

Пример выборки данных из базы booktown приведен в листинге 12.4.

Листинг 12.4. Простая выборка в JDBC.

Statement s = nul 1: try
{
s = c.createStatementO;
} catch (SQLException se) {
System.out.printlnC'We got an exception while creating a statement:" +
"that probably means we're no longer connected."):
se.printStackTrace();
System, exit(l);
}
ResultSet rs = null:
try {
rs = s.executeQuery("SELECT * FROM books");
} catch (SQLException se)
{
System.out.printlnC'We got an exception while executing our query:" +
"that probably means our SQL is invalid"):
se.pnntStackTrace():
System.exit(l):
}
int index = 0:
try { while (rs.nextO)
{
System.out.printlnC'Here's the result of row " + index++ + ":"):
System.out.pri ntln(rs.getStri ng(1)):
}
} catch (SQLException se) {
System.out.pnntlnC'We got an exception while getting a result:this " +
"shouldn't happen: we've done something really bad.");
se.pnntStackTrace();
System.exit(l):
}
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.