JDBC соединение java.sql.Connection

Класс JDBC Connection, java.sql.Connection, представляет соединение базы данных с реляционной базой данных. Прежде чем вы сможете читать или записывать данные из и в базу данных через JDBC, вам необходимо открыть соединение с базой данных.

Загрузка драйвера 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();

Оцените статью