Класс DriverManager - самый верхний в иерархии классов. Он отслеживает информацию о драйвере, о состоянии, регистрирует драйвер в процессе его загрузки и т.д. Когда требуется установить связь, этот класс выбирает драйвер в зависимости от URL JDBC.
Создать соединение с источником данных можно с помощью метода getConnection класса DriverManager.
Для задания источника данных используется соглашения по присвоению имен URL. В соответствии с правилами Internet, JDBC идентифицирует базу данных при помощи URL, который имеет следующую форму:
jdbc:<субпротокол>:<имя, связанное с
СУБД или протоколом>
Имя субпротокола odbc зарезервировано для источника данных формата ODBC. Типичный JDBC URL для БД ODBC выглядит следующим образом:
jdbc:odbc:<DSN-имя ODBC>;
user=<имя пользователя>;pw=<пароль>
Класс Connection ( соединение ) - один из самых важных в JDBC. Он предоставляет широкий спектр возможностей: от создания операторов до обработки транзакций. ОбъектConnection управляет всеми аспектами установки связи. Фактически, Connection - это класс, ведущий к драйверу СУБД. Успешно создав объект Connection для источника данных, программист может взаимодействовать с источниками самыми разными способами. Наиболее распространенный подход состоит в том, чтобы объекты управляли SQL-операторами.
В JDBC имеется три основных типа объектов для операторов:
Statement ;
PreparedStatement ;
CallableStatement.
Оператор SQL может быть выполнен немедленно ( Statement ), откомпилирован ( PreparedStatement ), представлен в виде вызова процедур ( CallableStatement ).
Для создания этих объектов класс Connection предлагает, соответственно, три метода:
createStatement() ;
prepareStatement(String sql) ;
prepareCall(String sql).
Объект Statement создается методом createStatement() из объекта Connection и лучше всего подходит для SQL-операторов, выполняемых один раз.
Когда запрос возвращает обычные строки данных, для выполнения SQL-оператора необходимо использовать метод executeQuery(String sql). В таком случае запрос - это статический SQL-запрос выборки SELECT. Метод executeQuery(String sql) принимает строку SQL, передает ее источнику данных через диспетчер драйверов, получает набор результатов и возвращает его прикладной программе. Метод возвращает только один набор результатов типа ResultSet. Если необходимо возвращать несколько наборов данных, применяется метод execute(String sql).
Для SQL-операторов, не возвращающих наборы результатов (например UPDATE, DELETE и INSERT ), объект Statement применяет метод executeUpdate(String sql), который берет строку SQL и возвращает целое. Это целое указывает количество строк, обработанных оператором SQL.
Объект ResultSet, представляющий набор результатов, фактически является табличным набором данных, т.е. состоит из рядов данных, организованных в унифицированные столбцы. Программа на языке Java, использующая JDBC, единовременно способна выдать только один ряд данных. Чтобы перейти к следующему ряду, она должна вызвать метод next(). JDBC не предоставляет метод для обратного движения по ResultSet или запоминания рядов ("закладки" в ODBC). Получив ряд, программа может пользоваться позиционным указателем (1 - для первого столбца, 2 - для второго и т.д.) или названием столбца и получить значение поля, вызвав метод getXXXX ( getInt, getByte,getString и т.д.) в соответствии с типом возвращаемых данных.