Читать «Java 7 (Наиболее полное руководство)» онлайн - страница 401

Ильдар Шаукатович Хабибуллин

Существуют четыре типа драйверов JDBC:

□ драйвер, реализующий методы JDBC вызовами функций ODBC. Это так называемый мост (bridge) JDBC—ODBC. Непосредственную связь с базой при этом осуществляет драйвер ODBC, который должен быть установлен на той машине, на которой работает программа;

□ драйвер, реализующий методы JDBC вызовами функций API самой СУБД. В этом случае на машине должен быть установлен клиент СУБД;

□ драйвер, реализующий методы JDBC вызовами функций сетевого протокола, независимого от СУБД, например HTTP. Этот протокол должен быть, затем, реализован средствами СУБД;

□ драйвер, реализующий методы JDBC вызовами функций сетевого протокола СУБД.

Перед обращением к базе данных следует установить нужный драйвер, например мост JDBC—ODBC:

try{

Class dr = sun.jdbc.odbc.JdbcOdbcDriver.class;

}catch(ClassNotFoundException e){

System.err.println("JDBC-ODBC bridge not found " + e);

}

Объект dr не понадобится в программе, но таков синтаксис.

Другой способ установки драйвера показан в листинге 25.1.

После того как драйвер установлен, можно связаться с базой данных. Методы связи описаны в интерфейсе Connection. Экземпляр класса, реализующего этот интерфейс, можно получить одним из статических методов getConnection( ) класса DriverManager, например:

String url = "jdbc:odbc:mydb";

String login = "admin";

String password = "1nF4vb";

Connection con = DriverManager.getConnection(url, login, password);

Обратите внимание на то, как формируется адрес базы данных url. Он начинается со строки "jdbc:", потом записывается подпротокол (subprotocol), в данном примере используется мост JDBC—ODBC, поэтому записывается "odbc:". Далее указывается адрес (subname) по правилам подпротокола, здесь просто имя локальной базы "mydb". Второй и третий аргументы — это имя и пароль для соединения с базой данных.

Связавшись с базой данных, можно посылать запросы. Запрос хранится в объекте, реализующем интерфейс Statement. Этот объект создается методом createStatement( ), описанным в интерфейсе Connection. Например:

Statement st = con.createStatement();

Затем запрос (query) заносится в этот объект методом execute () и потом выполняется методом getResultSet(). В простых случаях это можно сделать одним методом

executeQuery(), например:

ResultSet rs = st.executeQuery("SELECT name, code FROM tbl1");

Здесь из таблицы tbl1 извлекается содержимое двух столбцов name и code и заносится в объект rs класса, реализующего интерфейс ResultSet.

SQL-операторы insert, update, delete, create table и др. в простых случаях выполняются методом executeUpdate ().

Остается методом next () перебрать элементы объекта rs — строки полученной выборки - и извлечь данные многочисленными методами getXxx () интерфейса ResultSet, на

пример: while (rs.next()){

emp[i] = rs.getString("name"); num[i] = rs.getInt("code"); i++;