воскресенье, 5 декабря 2010 г.

Работа с базами данных в Java

Используемые сокращения:
  • БД - база данных;
  • СУБД - система управления базами данных;
  • API - Application Programming Interface, интерфейс программирования приложений;
  • ODBC -
  • SQL - Structured Query Language, структурированный язык запросов
Клиентское приложение может общаться с БД через т.н. драйвер БД. Здесь написать о разновидностях драйверов. Приложения Java используют для работы интерфейс JDBC (Java Database Connectivity), предоставляющий API для работы с различными СУБД. В библиотеках J2SE поставляется мост JDBC-ODBC, но предпочтительным является использование JDBC драйвера, поставляемого для конкретной СУБД. Дело в том, что ODBC был разработан с условиями максимальной переносимости между различными СУБД, что пагубно сказалось на производительности. Драйвера, написанные для конкретной СУБД, как правило, избавлены от этого недостатка. Рассмотрим общую последовательность работы Java-приложения с БД. Во-первых, все приложения, использующие SQL, должны использовать классы из пакета java.sql, поэтому их нужно импортировать: import java.sql.*; Затем, процедура, работающая с SQL, как правило, должна быть объявлена как возбуждающая исключение SQLException, примерно следующим образом: public static void main(String[] args) throws SQLException Теперь можно открывать соединение. Это делается следующим образом: Connection con = DriverManager.getConnection("jdbc:sybase:Tds:<хост>:<порт>/<база>","имя","пароль"); Следующим шагом является создание объекта Statement либо PreparedStatement. PreparedStatement отличается от Statement тем, что предоставляет возможность параметризованных запросов. Эти объекты предназначены для выполнения статических операторов SQL и возврата генерируемых результатов. //Вариант 1 Statement statement = con.createStatement(); //Вариант 2 PreparedStatement preparedStatement = con.prepareStatement(sql); Затем выполняется запрос, результаты которого при желании могут возвращаться в экземпляр класса ResultSet. //Вариант 1.1 statement.execute(sql); ResultSet resultSet = statement.getResultSet(); //Вариант 1.2 ResultSet resultSet = statement.executeQuery(sql); //Вариант 2 ResultSet resultSet = preparedStatement.getResultSet(); Для полученного объекта ResultSet доступны следующие основные операции: 1. Получение количества столбцов: int columnCount = metaData.getColumnCount(); 2. Получение метаданных о столбце (для всех процедур параметр i представляет собой номер столбца, допустимый диапазон его значений - от 1 до значения, полученного при вызове metaData.getColumnCount() 2.1 Получение заголовка столбца: metaData.getColumnLabel(i); 2.2 Получение максимальной ширины отображения столбца: metaData.getColumnDisplaySize(i); 3. Получение кортежа данных (необходимо перед выполнением операций с данными, например, получения значения конкретного столбца): resultSet.next(); 4. Получение значений столбцов: resultSet.getObject(i); (i - аналогично операции 2) Метод getResultSet может возвращать, кроме ResultSet'а, значение null или количество операций обновления, которое может быть получено методом getUpdateCount. В случае, если getResultSet вернул null, можно проверить наличие дополнительных результатов запроса вызовом метода getMoreResults, возвращающего булево значение (true или false). После использования созданные объекты - Connection, Statement, ResultSet - должны быть освобождены вызовом метода close(), причем в порядке, обратном порядку создания: resultSet.close(); statement.close(); con.close();

Комментариев нет:

Отправить комментарий