English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

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

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

Программирование для создания JDBC-соединения очень просто. Это четыре простых шага-

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

  • Регистрация JDBC-драйвера: Этот шаг позволяет JVM загрузить необходимые реализации драйверов в память, чтобы удовлетворить ваши запросы JDBC.

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

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

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

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

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

import java.sql.*; // используется для стандартных JDBC-программ
import java.math.*; // получить поддержку BigDecimal и BigInteger

注册 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("Ошибка: не удалось загрузить класс драйвера!");
   System.exit(1);
}

您可以使用getInstance()方法来解决不兼容的JVM,但是随后您必须编写两个额外的Exception的代码,如下所示:

try {
   Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
}
catch(ClassNotFoundException ex) {
   System.out.println("错误:无法加载驱动程序类!");
   System.exit(1);
catch(IllegalAccessException ex) {
   System.out.println("错误:加载时出现访问问题!");
   System.exit(2);
catch(InstantiationException ex) {
   System.out.println("错误:无法实例化驱动程序!");
   System.exit(3);
}

方法二- DriverManager.registerDriver()

您可以用来注册驱动程序的第二种方法是使用静态方法 DriverManager.registerDriver() .

如果使用的是不兼容JDK的JVM(例如Microsoft提供的JVM),则应使用 registerDriver() 方法。

以下示例用于registerDriver()注册Oracle驱动程序-

try {
   Driver myDriver = new oracle.jdbc.driver.OracleDriver();
   DriverManager.registerDriver(myDriver);
}
catch(ClassNotFoundException ex) {
   System.out.println("Ошибка: не удалось загрузить класс драйвера!");
   System.exit(1);
}

Формат URL базы данных

После загрузки драйвера можно использовать метод DriverManager.getConnection () для установления подключения. Для удобства просмотра让我 перечислить три overload метода DriverManager.getConnection()

  • getConnection(String url)

  • getConnection(String url, Properties prop)

  • getConnection(String url, String user, String password)

Здесь каждому формату需要一个 база данныхURL. URL базы данных это адрес, указывающий на вашу базу данных.

Создание URL базы данных - это место, где происходит большинство проблем, связанных с 建立

В таблице ниже перечислены常用ные имена JDBC-драйверов и URL базы данных.

База данныхНазвание JDBC-драйвераФормат URL
MySQLcom.mysql.jdbc.Driverjdbc:mysql://hostname/databaseName
ORACLEoracle.jdbc.driver.OracleDriverjdbc:oracle:thin:@hostname: номер порта:databaseName
DB2COM.ibm.db2.jdbc.net.DB2Driverjdbc:db2:hostname: номер порта/databaseName
Sybasecom.sybase.jdbc.SybDriverjdbc:sybase:Tds:hostname: номер порта/databaseName

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

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

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

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

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

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

Если у вас есть хост на TCP / IP-адресе 192.0.0.1 с именем хоста amrood, и ваш Oracle listener настроен на порт 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

Таким образом, можно создать aforementioned соединение следующим образом-

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);

Объект свойств содержит набор пар ключ-значение. Он используется для передачи свойств драйвера драйверу во время вызова метода 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 необходимо явно закрывать все подключения к базе данных, чтобы завершить каждую сессию базы данных. Однако, если вы забудете, garbage collector Java закроет это подключение при очистке старых объектов.

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

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

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

conn.close();

Закрытие подключения явно может сэкономить ресурсы DBMS, что удовлетворит вашего администратора базы данных.

Чтобы лучше понять, мы рекомендуем вам изучитьУчебник по примерам кода JDBC.