English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
После установки соответствующего драйвера вы можете использовать JDBC для создания подключения к базе данных.
Программирование для создания JDBC-соединения очень просто. Это четыре простых шага-
Импортировать пакет JDBC:Добавьте команду в ваш Java-программу import, чтобы импортировать необходимые классы в ваш код Java.
Регистрация JDBC-драйвера: Этот шаг позволяет JVM загрузить необходимые реализации драйверов в память, чтобы удовлетворить ваши запросы JDBC.
Конфигурация URL базы данных: Это необходимо для создания правильного адреса, указывающего на базу данных, к которой вы хотите подключиться.
Создание объекта подключения:В конце, напишите вызовDriverManagerобъектаgetConnection()Код вызова метода, чтобы создать фактическое соединение с базой данных.
Строка импорта сообщает компилятору Java, где можно найти классы, используемые в коде, и ставится в начале файла.
Чтобы использовать стандартный пакет JDBC (который позволяет вам выбирать, вставлять, обновлять и удалять данные SQL-таблицы), добавьте следующие импорты в ваш код.
import java.sql.*; // используется для стандартных JDBC-программ import java.math.*; // получить поддержку BigDecimal и BigInteger
在使用驱动程序之前,必须在程序中注册该驱动程序。注册驱动程序是将 Oracle 驱动程序的类文件加载到内存中的过程,因此可以将其用作 JDBC 接口的实现。
你只需要在你的程序中注册一次。您可以通过以下两种方式之一注册驱动程序。
注册驱动程序的最常见方法是使用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() .
如果使用的是不兼容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); }
После загрузки драйвера можно использовать метод 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 |
---|---|---|
MySQL | com.mysql.jdbc.Driver | jdbc:mysql://hostname/databaseName |
ORACLE | oracle.jdbc.driver.OracleDriver | jdbc:oracle:thin:@hostname: номер порта:databaseName |
DB2 | COM.ibm.db2.jdbc.net.DB2Driver | jdbc:db2:hostname: номер порта/databaseName |
Sybase | com.sybase.jdbc.SybDriver | jdbc:sybase:Tds:hostname: номер порта/databaseName |
Все выделенные части в формате URL являются статическими, вам нужно только изменить其余部分 в соответствии с настройками базы данных.
Мы перечислили три DriverManager.getConnection() метод для создания объекта подключения.
самый часто используемый формат 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);
Вторая форма метода 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);
Третья форма метода 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 необходимо явно закрывать все подключения к базе данных, чтобы завершить каждую сессию базы данных. Однако, если вы забудете, garbage collector Java закроет это подключение при очистке старых объектов.
Слишком доверять garbage collection, особенно в программировании баз данных, это очень плохая практика программирования. Вы должны приучить себя всегда использовать метод close(), связанный с объектом подключения, чтобы закрывать подключения к базе данных.
Чтобы обеспечить закрытие подключения, вы можете предоставить в коде блок "finally".finallyБлок всегда выполняется, независимо от того, произошла ли异常 или нет.
Чтобы закрыть открытое выше подключение, вы должны вызвать метод close() следующим образом:
conn.close();
Закрытие подключения явно может сэкономить ресурсы DBMS, что удовлетворит вашего администратора базы данных.
Чтобы лучше понять, мы рекомендуем вам изучитьУчебник по примерам кода JDBC.