Класс JDBC Connection, java.sql.Connection, представляет соединение базы данных с реляционной базой данных. Прежде чем вы сможете читать или записывать данные из и в базу данных через JDBC, вам необходимо открыть соединение с базой данных.
- Загрузка драйвера JDBC
- Открытие соединения JDBC
- Открыть соединение с URL
- Открыть соединение с URL, пользователем и паролем
- Открыть соединение с URL и свойствами
- Закрытие соединения JDBC
- Закрытие соединения с помощью Try-With-Resources
- setAutoCommit()
- commit()
- rollback()
- createStatement()
- prepareStatement()
- getMetaData()
Загрузка драйвера JDBC
Прежде чем открыть JDBC-соединение с базой данных, вам необходимо сначала загрузить драйвер JDBC для этой базы данных. На самом деле, в Java 6 это больше не нужно, но это не подведет. Вы загружаете драйвер JDBC следующим образом:
Class.forName("driverClassName");
Каждый драйвер JDBC имеет основной класс драйверов, который инициализирует драйвер при его загрузке. Например, чтобы загрузить драйвер H2Database, вы пишете это:
Class.forName("org.h2.Driver");
Вы должны загрузить драйвер только один раз. Вам не нужно загружать его перед каждым открытием соединения. Только до того, как открылось первое соединение JDBC.
Открытие соединения JDBC
Вы открываете JDBC-соединение, вызывая метод класса java.sql.DriverManager getConnection(). Есть три варианта этого метода. Я покажу каждый вариант в следующих разделах.
Открыть соединение с URL
Первый вариант метода принимает в качестве параметра только URL к базе данных. Вот так выглядит вызов getConnection() только с URL-адресом в качестве параметра:
String url = "jdbc:h2:~/test"; //database specific url.
Connection connection =
DriverManager.getConnection(url);
URL-адрес является ссылкой на вашу базу данных. Вы должны проверить документацию для вашей базы данных и драйвера JDBC, чтобы увидеть, какой формат для вашей конкретной базы данных. URL, показанный выше, предназначен для базы данных H2D.
Открыть соединение с URL, пользователем и паролем
Второй вариант getConnection() принимает в качестве параметров URL базы данных, имя пользователя и пароль. Вот пример вызова этого варианта getConnection():
String url = "jdbc:h2:~/test"; //database specific url.
String user = "sa";
String password = "";
Connection connection =
DriverManager.getConnection(url, user, password);
Параметры user и password — это имя пользователя и пароль для вашей базы данных.
Открыть соединение с URL и свойствами
Третий вариант getConnection() принимает в качестве параметра URL базы данных и объект Properties. Вот пример вызова этого варианта getConnection():
String url = "jdbc:h2:~/test"; //database specific url.
Properties properties = new Properties( );
properties.put( "user", "sa" );
properties.put( "password", "" );
Connection connection =
DriverManager.getConnection(url, properties);
Объект Properties используется для передачи специальных свойств, которые необходимы базе данных при открытии соединения. Какие именно свойства необходимы для конкретной базы данных, зависит от базы данных, ее возможностей и т. Д. Чтобы увидеть это, вам нужно проверить документацию для данной базы данных и ее драйвера JDBC.
Закрытие соединения JDBC
Как только вы закончите использовать соединение с базой данных, вы должны закрыть его. Это делается путем вызова метода Connection.close(), например:
connection.close();
Важно закрыть соединение JDBC, как только вы закончите с ним. Соединение с базой данных занимает много ресурсов, как внутри вашего собственного приложения, но особенно на сервере базы данных. Следовательно, для сохранения открытых подключений к базе данных, которые не используются, потребуется, чтобы база данных содержала ненужные ресурсы, выделенные для подключения.
Закрытие соединения с помощью Try-With-Resources
Можно автоматически закрыть соединение JDBC через конструкцию Java Try-with-resources, которая была добавлена в Java 7. Вот пример того, как это сделать:
String url = "jdbc:h2:~/test"; //database specific url.
String user = "sa";
String password = "";
try(Connection connection =
DriverManager.getConnection(url, user, password)) {
//use the JDBC Connection inhere
}
Как видите, соединение JDBC открывается в скобках в блоке try. Внутри блока try вы можете использовать соединение с базой данных, как обычно. Как только выполнение выйдет из блока try, JDBC-соединение автоматически закроется для вас. Таким образом, вы не забудете закрыть JDBC-соединение самостоятельно.
setAutoCommit()
Метод setAutoCommit() соединения JDBC используется для переключения соединения в режим автоматической фиксации или из него. В режиме автоматической фиксации каждое отдельное обновление, отправленное в базу данных, будет зафиксировано немедленно, как если бы оно выполнялось в рамках собственной транзакции. Когда режим автоматической фиксации не указан, каждая транзакция базы данных должна быть явно зафиксирована путем вызова метода Connection commit(). Это объясняется более подробно в транзакциях JDBC.
Вот пример переключения JDBC-соединения в режим автоматической фиксации:
connection.setAutoCommit(true);
И вот пример переключения соединения JDBC из режима автоматической фиксации:
connection.setAutoCommit(false);
Режим по умолчанию для соединения JDBC, если не указан режим автоматической фиксации, — это включить режим автоматической фиксации.
commit()
Метод commit() JDBC Connection фиксирует транзакцию. Как именно транзакции работают и должны обрабатываться, описано в Учебном руководстве по транзакциям JDBC. Вот простой пример совершения транзакции через соединение JDBC. Обратите внимание, что правильная обработка исключений была исключена из этого примера, чтобы сделать его кратким.
connection.setAutoCommit(false); // perform operations on the JDBC Connection // which are to be part of the transaction connection.commit();
Имейте в виду, что в случае сбоя некоторых операций в транзакции вы, скорее всего, захотите вызвать метод rollback() вместо commit().
rollback()
Метод rollback() Java JDBC Connection откатывает операции, выполненные в текущей текущей транзакции. О том, как обрабатывать вызовы commit() и / или rollback(), рассказывается в руководстве по транзакциям JDBC. Вот простой пример вызова метода rollback() соединения JDBC:
try{
connection.setAutoCommit(false);
// perform operations on the JDBC Connection
// which are to be part of the transaction
connection.commit();
} catch(SQLException e) {
connection.rollback();
}
Обратите внимание, как rollback() вызывается в блоке catch блока try-catch. Если при попытке выполнить операции в транзакции возникает исключение, вся транзакция откатывается.
createStatement()
Соединение JDBC createStatement() создает объект оператора JDBC. Экземпляр Statement может использоваться для выполнения обновлений SQL для базы данных или для выполнения запросов SQL к базе данных. Вот пример создания экземпляра оператора JDBC с помощью метода createStatement() соединения JDBC:
Statement statement = connection.createStatement();
prepareStatement()
Соединение JDBC prepareStatement() создает объект JDBC PreparedStatement. Экземпляр PreparedStatement можно использовать для выполнения обновлений SQL для базы данных или для выполнения запросов SQL к базе данных. Вот пример создания экземпляра JDBC PreparedStatement с помощью соединения JDBC prepareStatement():
String sql = "select * from people where id=?";
PreparedStatement preparedStatement =
connection.prepareStatement(sql);
getMetaData()
Метод getMetaData() JDBC-соединения возвращает объект JDBC DatabaseMetaData, который можно использовать для анализа базы данных, к которой подключено JDBC-соединение. Что вы можете сделать с DatabaseMetaData, описано в Учебном руководстве по JDBC DatabaseMetaData. Вот пример создания объекта JDBC DatabaseMetaData с помощью метода getMetaData() JDBC-соединения:
DatabaseMetaData databaseMetaData = connection.getMetaData();
