Работа с базами данных Java

{title}

Java как многоцелевой язык, помимо различных функциональных возможностей, которые мы можем достичь, также позволяет нам работать с постоянством данных, для этого мы можем подключаться к различным механизмам баз данных, которые существуют на рынке.
База данных может быть чем-то таким же простым, как система ключ-значение в простом текстовом файле, или более сложными и современными решениями, такими как нереляционные, что делает возможность разработки различных схем соединений обязательной функцией.,

Использование JDBC


JDBC - это набор классов, которые позволяют Java устанавливать соединения с ядрами базы данных, это позволяет нам получать результаты запросов в объекте с именем ResultSet .
Поскольку каждый механизм отличается, вероятно, что ResultSet, который мы получаем, является специфическим для него, поэтому нам неудобно структурировать наше приложение вокруг этого объекта.
Для решения этой проблемы мы можем использовать так называемый объект доступа, с помощью которого мы можем управлять различными формами нашего ResultSet, что делает его приложение в нашей программе более простым для реализации, и, таким образом, у разработчика меньше проблем.
DAO дизайн шаблона

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

Сделайте наше первое соединение через JDBC


Первое, что нам нужно сделать, чтобы создать соединение JDBC, - это определить, к какому движку мы хотим установить соединение, а затем получить необходимые классы для этого соединения. В этом случае мы собираемся установить соединение с MySQL, этот движок легкий, свободный и кроссплатформенный, поэтому мы можем установить его как на Windows, Linux или Mac .

Получить Соединитель / J


Connector / J - это набор классов, которые предлагает нам команда разработчиков MySQL, с их помощью мы можем заставить JDBC работать вместе с этим менеджером реляционных баз данных, чтобы иметь возможность включить его в наш проект, мы должны выполнить следующие шаги.
1. Мы должны загрузить файл, соответствующий нашей платформе, либо Windows, либо для других пользователей, с официальной страницы MySQL по следующей ссылке.

{title}


2 - В этом уроке мы будем работать под Windows, поэтому для его реализации в наших примерах мы сделаем это во время выполнения для большей простоты, однако при загрузке пакета мы устанавливаем его так, чтобы он был доступен на нашем компьютере.
3 - Теперь мы продолжим доказывать, что на нашем оборудовании все работает правильно, для этого создадим небольшой код, в котором мы увидим, успешно ли загружен соединитель / J в нашу систему, для этого мы будем использовать следующий код:
 открытый класс TestConnection {открытый статический void main (String [] args) {try {Class c = Class.forName ("com.mysql.jdbc.Driver"); System.out.println ("Класс загружен:" + c.getName ()); } catch (ClassNotFoundException ex) {System.err.println (ex); }}} 

4 - Для запуска этого примера нам нужно включить зависимость, рекомендуется, чтобы у нас был .jar по тому же пути, что и у нашего файла TestConexion.java . После этого мы скомпилируем наш файл, откроем консоль и с помощью инструкции javac и добавим .jar к пути к классам во время выполнения с помощью команды –cp, которой мы можем добиться этого, давайте посмотрим на командную строку:
 javac –cp mysql-connector-java-5.1.34-bin.jar TestConnection.java 

5 - Наконец, чтобы выполнить наш файл, нам нужно всего лишь выполнить следующую инструкцию:
 java –cp mysql-connector-java-5.1.34-bin.jar Тестовое соединение 

Если в нашей консоли будет результат, подобный следующему, мы можем начать работать с операциями с базами данных :

{title}

Установление связи


Следующий шаг, который нам нужно выполнить, - это установить эффективное соединение с нашей базой данных, для этого мы должны создать такую, по крайней мере, с одной таблицей на нашем локальном сервере, таким образом мы можем выполнить некоторые тесты, чтобы упростить то, что мы создаем базу данных test и мы используем следующий скрипт для создания таблицы и вставки некоторых записей теста, чтобы ускорить разработку учебника:

СОЗДАЙТЕ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ `users` (
`id` bigint (20) NOT NULL AUTO_INCREMENT,
`name` varchar (255) НЕ NULL,
дата не указана,
`state` int (11) NOT NULL,
ПЕРВИЧНЫЙ КЛЮЧ (`id`)
) ENGINE = InnoDB CHARSET ПО УМОЛЧАНИЮ = latin1 AUTO_INCREMENT = 3;
INSERT INTO `users` (` id`, `name`, ` date`, `status`) ЗНАЧЕНИЯ
(1, «Пользователь 1», «2015-01-01», 1),
(2, «Пользователь 2», «2015-01-01», 1);

Теперь в следующем Java- коде мы сосредоточимся на установлении соединения с базой данных, для этого с помощью блока try catch мы проверим его эффективность и без ошибок, затем, если соединение было установлено, мы напечатаем сообщение об успехе, давайте посмотрим:
 импорт java.sql.Connection; import java.sql.DriverManager; открытый класс Test Connection {private static final String path = "jdbc: mysql: // localhost"; private static final String user = "наш пользователь"; private static final String password = "наш пароль"; public static void main (String [] args) {try {Соединение с = DriverManager.getConnection (путь, пользователь, пароль); System.out.println («Соединение установлено»); } catch (Exception e) {e.printStackTrace (); }}} 

Из этого кода мы можем заметить, что мы должны импортировать две библиотеки из пакета java.sql : одна - это Connection, которая отвечает за управление всеми действиями для взаимодействия с базой данных, а другая - DeviceManager, которая отвечает за то, как мы будем взаимодействовать. с этим. Если мы выполнили шаги правильно, мы должны увидеть следующее сообщение при запуске нашего примера в консоли:

{title}

Делать запросы


У нас уже есть все готовое для начала тестирования наших запросов, для этого нам понадобится несколько вещей: первое, что у нас уже есть, это объект, который делает нас соединением с базой данных, затем нам нужно будет импортировать пакеты Statement и ResultSet с который мы можем сначала отправить запросы, а затем получить ответ от него, наконец, мы проходим через объект ResultSet, где мы покажем данные, вставленные в таблицу, и перед закрытием программы мы должны закрыть каждый из объектов, которые мы создали, этого Таким образом, мы гарантируем целостность наших данных. Давайте посмотрим код, который показывает объясненное:
 импорт java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; открытый класс Test Connection {private static final String path = "jdbc: mysql: // localhost / test"; private static final String user = "наш пользователь"; private static final String password = "наш пароль"; public static void main (String [] args) {try {Соединение с = DriverManager.getConnection (путь, пользователь, пароль); Запрос оператора = con.createStatement (); System.out.println («Соединение установлено»); ResultSet result = query.executeQuery ("SELECT * FROM users"); while (result.next ()) {String name = result.getString ("name"); String date = result.getString ("date"); System.out.println («Имя:» + имя + «Дата регистрации:» + дата); } result.close (); query.close (); con.close (); } catch (Exception e) {e.printStackTrace (); }}} 

Важно отметить, что в нашем атрибуте маршрута мы изменили его и после локального узла было добавлено имя базы данных с именем test, где мы должны создать нашу таблицу пользователей, мы скомпилируем наш файл и выполним, результат по консоли будет таким, как видно в Следующая картина:

$config[ads_text5] not found

{title}

Подготовленные заявления


Рассмотрев пример подключения и запросов к базе данных, мы можем заметить, что нам нужно использовать фигуру под названием « Подготовить оператор», которая позволяет нам оставлять готовые запросы, чтобы мы могли выполнять их несколько раз, не создавая их снова и снова. Однажды для достижения этой динамики мы подставляем значения, которые нам нужно изменить, переменными, а затем, при выполнении запроса, передаем фактические значения, которые мы собираемся использовать.
выгода

Это имеет несколько преимуществ, первое, что мы сказали, - это возможность использовать что-то без повторения, но это также для безопасности, поскольку это позволяет нам обрабатывать значения, которые могут поступать при вводе пользователем, чтобы избежать атаки на нашу базу данных, в дополнение к Мы также можем улучшить читаемость нашей программы.
В следующем примере мы создадим запрос с подготовленным оператором, чтобы его можно было использовать несколько раз во время нашей программы. Давайте посмотрим на полученный код:

 импорт java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.PreparedStatement; открытый класс PreparedStatement Test {private static final String path = "jdbc: mysql: // localhost / test"; private static final String user = "наш пользователь"; private static final String password = "наш пароль"; public static void main (String [] args) {try {Соединение с = DriverManager.getConnection (путь, пользователь, пароль); PreparedStatement query = con.prepareStatement ("SELECT * FROM users Where id = ?;"); System.out.println («Соединение установлено»); query.setInt (1, 1); ResultSet result = query.executeQuery (); while (result.next ()) {String name = result.getString ("name"); String date = result.getString ("date"); System.out.println («Имя:» + имя + «Дата регистрации:» + дата); } result.close (); query.close (); con.close (); } catch (Exception e) {e.printStackTrace (); }}} 

Мы отмечаем, что использование метода setInt с объектом запроса заключается в том, что мы можем передать необходимый параметр для запроса, с этим мы можем отделить его от выполнения запроса, таким образом, получая портативность и удобство чтения. Наконец, мы компилируем и выполняем нашу программу:

$config[ads_text5] not found

{title}


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