Название: Java и базы данных - Методические указания (В.Н. Глазков)

Жанр: Информатика

Просмотров: 1403


Соединение

 

Соединение представляет собой сеанс с конкретной базой данных и реализуется объектом Connection. Последний создается и предоставляется диспетчером драйвера методом get Con-nection(...), в который передаётся URL конкретной базы данных и, при необходимости, имя пользователя и пароль в строковом виде:

 

           String url  = "jdbc:odbc.mySource";

           String uid  = "javauser";    // имя

           String pwd = "hotjava";     // пароль

           Connection cnct = // создание объекта Connection

           DriverManager.getConnection(url, uid, pwd);

 

Имя пользователя и пароль можно задавать как в качестве входных параметров метода getConnection(), так и в строке URL. Объект cnct далее можно использовать для проведения запросов к

базе данных, а также для манипуляций с базой данных.

Внутри контекста соединения выполняются SQL-выражения  и возвращается результат.

Соединения могут закрываться методом close() – это простое

закрытие текущего соединения; либо автоматически, когда оно убирается при сборке мусора или при возникновении фатальной ошибки.

Метод boolean isClosed() определяет, закрыто ли соединение.

Метод void setAutoClose(boolean auto) может установить / отме-нить режим автозакрытия параметром auto = true/false;

 

if(cnct.getAutoClose())

if(cnct.isClosed()  cnct.close();)  // закрытие

cnct.setAutoClose(false); // отмена автозакрытия

После присоединения к базе данных методом DriverManager. getConnection() можно использовать полученный объект Con-nection cnct для создания объекта-оператора (инструкции).

 

Выполнение обычных SQL–инструкций

 

Для выполнения запросов к базе данных используются специальные объекты-инструкции, определяемые классом Statement, подготовленные инструкции, определяемые его подклассом PreparedStatement, а также вызываемые инструкции, определяемые подклассом последнего класса CallableStatement.

Эти объекты могут посылать в виде строки (String)  sql-запросы и получать запрошенные данные в виде объектов ResultSet. Обычные инструкции (Statement) как правило, создаются, посылаются и выполняются только однажды в отличие от подготовленных и вызываемых.

Создание инструкции. Обычная инструкция соединения создаётся непосредственно после создания соединения. Она является объектом, связанным с соединением, и будет использоваться при выполнении SQL– запросов в среде соединения с СУБД. Последовательность действий такова:

 – создание соединения,

 – формирование текста инструкции,

 – исполнение sql-инструкции,

 – получение результатов,

 – закрытие sql-инструкции,

 – закрытие соединения.

 

Объект инструкции получается посредством вызова метода createStatement() соединения Connection. Инструкция может быть закрыта методом сlose().

 

Statement stmt = cnct.createStatement();

 

Запрос, оформленный в строке на языке SQL,  может быть исполнен методами:

 

// передача строки СУБД и выполнение sql-оператора

ResultSet executeQuery(String sql),

int executeUpdate(String sql),

boolean execute (String sql).

 

Какой из методов применить в данной ситуации, зависит от характера самого запроса (вида необходимых операций).

Первый обычно используется, если sql-запрос содержит оператор SELECT, запрашивающий данные из базы данных. Эти данные помещаются в объект ResultSet и представляются затем его методами.

Второй применяется для запросов, обновляющих данные в базе данных INSERT, UPDATE, DELETE и возвращает количество обновлений.

Третий используется для инструкций, возвращающих более чем один результат (множественные наборы результатов). Сами результаты запрашиваются методом getResultSet() объекта Statement в порядке очереди.