Учебники

JDBC — соединения с базой данных

После того, как вы установили соответствующий драйвер, пришло время установить соединение с базой данных с помощью JDBC.

Программирование, необходимое для установления соединения JDBC, довольно просто. Вот эти простые четыре шага —

  • Импорт пакетов JDBC: добавьте операторы импорта в вашу Java-программу, чтобы импортировать необходимые классы в ваш Java-код.

  • Зарегистрировать драйвер JDBC: этот шаг заставляет JVM загрузить желаемую реализацию драйвера в память, чтобы он мог выполнять ваши запросы JDBC.

  • Формулировка URL базы данных: это для создания правильно отформатированного адреса, который указывает на базу данных, к которой вы хотите подключиться.

  • Создание объекта подключения. Наконец, закодируйте вызов метода getConnection () объекта DriverManager , чтобы установить фактическое подключение к базе данных.

Импорт пакетов JDBC: добавьте операторы импорта в вашу Java-программу, чтобы импортировать необходимые классы в ваш Java-код.

Зарегистрировать драйвер JDBC: этот шаг заставляет JVM загрузить желаемую реализацию драйвера в память, чтобы он мог выполнять ваши запросы JDBC.

Формулировка URL базы данных: это для создания правильно отформатированного адреса, который указывает на базу данных, к которой вы хотите подключиться.

Создание объекта подключения. Наконец, закодируйте вызов метода getConnection () объекта DriverManager , чтобы установить фактическое подключение к базе данных.

Импорт пакетов JDBC

Операторы Import сообщают компилятору Java, где найти классы, на которые вы ссылаетесь в своем коде, и которые находятся в самом начале исходного кода.

Чтобы использовать стандартный пакет JDBC, который позволяет выбирать, вставлять, обновлять и удалять данные в таблицах SQL, добавьте в свой исходный код следующие операции импорта

import java.sql.* ;  // for standard JDBC programs
import java.math.* ; // for BigDecimal and BigInteger support

Зарегистрировать драйвер JDBC

Вы должны зарегистрировать драйвер в своей программе, прежде чем использовать его. Регистрация драйвера — это процесс, с помощью которого файл класса драйвера Oracle загружается в память, поэтому его можно использовать как реализацию интерфейсов JDBC.

Вы должны сделать эту регистрацию только один раз в вашей программе. Вы можете зарегистрировать драйвер одним из двух способов.

Подход I — Class.forName ()

Наиболее распространенный подход для регистрации драйвера заключается в использовании метода Java Class.forName () для динамической загрузки файла класса драйвера в память, которая автоматически регистрирует его. Этот метод предпочтителен, поскольку позволяет сделать регистрацию драйвера настраиваемой и переносимой.

В следующем примере Class.forName () используется для регистрации драйвера Oracle:

try {
   Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch(ClassNotFoundException ex) {
   System.out.println("Error: unable to load driver class!");
   System.exit(1);
}

Вы можете использовать метод getInstance () для работы с несовместимыми JVM, но тогда вам придется кодировать два дополнительных исключения следующим образом:

try {
   Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
}
catch(ClassNotFoundException ex) {
   System.out.println("Error: unable to load driver class!");
   System.exit(1);
catch(IllegalAccessException ex) {
   System.out.println("Error: access problem while loading!");
   System.exit(2);
catch(InstantiationException ex) {
   System.out.println("Error: unable to instantiate driver!");
   System.exit(3);
}

Подход II — DriverManager.registerDriver ()

Второй подход, который вы можете использовать для регистрации драйвера, заключается в использовании статического метода DriverManager.registerDriver () .

Вам следует использовать метод registerDriver (), если вы используете JVM, не совместимую с JDK, например, предоставленную Microsoft.

В следующем примере используется registerDriver () для регистрации драйвера Oracle —

try {
   Driver myDriver = new oracle.jdbc.driver.OracleDriver();
   DriverManager.registerDriver( myDriver );
}
catch(ClassNotFoundException ex) {
   System.out.println("Error: unable to load driver class!");
   System.exit(1);
}

Формулировка базы данных URL

После загрузки драйвера вы можете установить соединение, используя метод DriverManager.getConnection () . Для удобства рассмотрим три перегруженных метода DriverManager.getConnection ():

  • getConnection (String url)

  • getConnection (строковый URL, свойства prop)

  • getConnection (строковый URL, строковый пользователь, строковый пароль)

getConnection (String url)

getConnection (строковый URL, свойства prop)

getConnection (строковый URL, строковый пользователь, строковый пароль)

Здесь каждая форма требует URL базы данных. URL базы данных — это адрес, который указывает на вашу базу данных.

При составлении URL базы данных возникает большинство проблем, связанных с установлением соединения.

В следующей таблице перечислены имена популярных драйверов JDBC и URL базы данных.

RDBMS Имя драйвера JDBC Формат URL
MySQL com.mysql.jdbc.Driver jdbc: mysql: // имя_хоста / имя_базы_данных
ORACLE oracle.jdbc.driver.OracleDriver JDBC: оракул: тонкий: @ имя хоста: номер порта: имя_базы данных
DB2 COM.ibm.db2.jdbc.net.DB2Driver JDBC: DB2: имя хоста: номер порта / имя_базы данных
Sybase com.sybase.jdbc.SybDriver jdbc: sybase: Tds: имя хоста: номер порта / имя_базы данных

Вся выделенная часть в формате URL является статической, и вам нужно изменить только оставшуюся часть в соответствии с настройкой вашей базы данных.

Создать объект подключения

Мы перечислили три формы метода DriverManager.getConnection () для создания объекта подключения.

Использование базы данных URL с именем пользователя и паролем

Наиболее часто используемая форма getConnection () требует, чтобы вы передавали URL базы данных, имя пользователя и пароль :

Предполагая, что вы используете тонкий драйвер Oracle, вы зададите значение host: port: databaseName для части базы данных URL.

Если у вас есть хост с адресом TCP / IP 192.0.0.1 с именем хоста amrood, и ваш слушатель Oracle настроен на прослушивание порта 1521, а ваша база данных называется EMP, тогда полный URL базы данных будет —

jdbc:oracle:thin:@amrood:1521:EMP

Теперь вам нужно вызвать метод getConnection () с соответствующим именем пользователя и паролем, чтобы получить объект Connection следующим образом:

String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
String USER = "username";
String PASS = "password"
Connection conn = DriverManager.getConnection(URL, USER, PASS);

Использование только URL базы данных

Вторая форма метода DriverManager.getConnection () требует только URL базы данных —

DriverManager.getConnection(String url);

Однако в этом случае URL базы данных содержит имя пользователя и пароль и имеет следующую общую форму:

jdbc:oracle:driver:username/password@database

Итак, вышеуказанное соединение может быть создано следующим образом —

String URL = "jdbc:oracle:thin:username/password@amrood:1521:EMP";
Connection conn = DriverManager.getConnection(URL);

Использование базы данных URL и объекта свойств

Третья форма метода DriverManager.getConnection () требует URL базы данных и объекта Properties —

DriverManager.getConnection(String url, Properties info);

Объект Properties содержит набор пар ключевое слово-значение. Он используется для передачи свойств драйвера драйверу во время вызова метода getConnection ().

Чтобы сделать то же соединение, что и в предыдущих примерах, используйте следующий код —

import java.util.*;

String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
Properties info = new Properties( );
info.put( "user", "username" );
info.put( "password", "password" );

Connection conn = DriverManager.getConnection(URL, info);

Закрытие соединений JDBC

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

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

Чтобы гарантировать, что соединение закрыто, вы можете предоставить блок «finally» в своем коде. Блок finally всегда выполняется независимо от того, происходит исключение или нет.

Чтобы закрыть открытое выше соединение, вы должны вызвать метод close () следующим образом:

conn.close();

Явное закрытие соединения экономит ресурсы СУБД, что порадует администратора базы данных.

Для лучшего понимания мы предлагаем вам изучить наш учебник JDBC — образец кода .