Содержание
Java обеспечивает JDBC (Java DataBase Connectivity) как часть Java SDK (Software Development Kit). Используя этот API, очень легко подключиться к реляционной базе данных
и выполнять обычные операции, такие как запрос, вставка, обновление и удаление записей.
Хотя базовый API JDBC включен в Java, для подключения к конкретной базе данных, такой как MySQL или SQL Server, требуется дополнительный компонент, известный как драйвер базы данных. Этот драйвер базы данных является программным компонентом, который переводит основные вызовы JDBC в формат, понятный этой базе данных.
В этой статье давайте рассмотрим детали подключения к базе данных MySQL и как выполнить несколько запросов с ней.
Драйвер базы данных MySQL
Как объяснено выше, для подключения к базе данных MySQL необходим драйвер JDBC для MySQL. Это называется драйвером Connector / J и его можно скачать с сайта MySQL здесь.
После загрузки файла ZIP (или TAR.GZ) распакуйте архив и скопируйте файл JAR. MySQL-разъем-Java-bin.jar в подходящее место. Этот файл необходим для запуска любого кода, который использует драйвер JDBC MySQL.
Создание образца базы данных
Предполагая, что вы загрузили базу данных MySQL и настроили ее правильно
где у вас есть доступ к нему, давайте создадим образец базы данных, чтобы мы могли использовать ее для подключения и выполнения запросов.
Подключитесь к базе данных, используя клиент по вашему выбору, и выполните следующие инструкции, чтобы создать образец базы данных.
create database sample;
Нам также нужны имя пользователя и пароль, чтобы иметь возможность подключиться к базе данных (если вы не хотите подключаться как администратор, что, как правило, плохая идея).
Следующее создает пользователя с именем TestUser кто будет подключаться к базе данных MySQL с той же машины, на которой он запущен локальный), используя пароль securepwd.
create user 'testuser'@'localhost' identified by 'securepwd';
Если вы подключаетесь к базе данных, работающей на другом компьютере (с именем remotemc), вам нужно использовать следующее (remotemc может быть именем хоста или IP-адресом):
create user 'testuser'@'remotemc' identified by 'securepwd';
Теперь, когда имя пользователя и пароль созданы, нам нужно предоставить доступ к образцу базы данных, созданному ранее.
grant all on sample.* to 'testuser'@'localhost';
Или, если база данных удалена:
grant all on sample.* to 'testuser'@'remotemc';
Теперь вы должны убедиться, что вы можете подключиться к базе данных
как пользователь, которого вы только что создали с тем же паролем. Вы также можете выполнить следующие команды после подключения, чтобы убедиться, что все разрешения правильные.
create table joe(id int primary key auto_increment, name varchar(25));
drop table joe;
Настройка пути к классам Java
Давайте теперь рассмотрим детали подключения к MySQL из Java.
, Первым шагом является загрузка драйвера базы данных. Это делается путем вызова следующего в подходящем месте.
Class.forName("com.mysql.jdbc.Driver");
Код может выдать исключение, поэтому вы можете его перехватить, если намереваетесь разобраться с ним (например, отформатировать сообщение об ошибке для графического интерфейса).
try {
Class.forName("com.mysql.jdbc.Driver");
} catch(ClassNotFoundException ex) {
// use the exception here
}
Очень часто этот код вызывается в статическом блоке в классе, поэтому программа немедленно завершается ошибкой, если драйвер не может быть загружен.
public class Sample
{
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch(ClassNotFoundException ex) {
System.err.println("Unable to load MySQL Driver");
}
}
}
Конечно, чтобы найти драйвер, программа должна быть вызвана с помощью JAR-драйвера (скачанного и извлеченного выше), включенного в путь к классу, следующим образом.
java -cp mysql-connector-java--bin.jar:...
Подключение к MySQL с Java
Теперь, когда мы вычеркнули детали загрузки драйвера MySQL из java, давайте подключимся к базе данных. Одним из способов создания соединения с базой данных является использование DriverManager.
String jdbcUrl = ...;
Connection con = DriverManager.getConnection(jdbcUrl);
И что это JDBCURL? Он указывает детали соединения, включая сервер, на котором расположена база данных, имя пользователя и так далее. Вот пример URL для нашего примера.
String jdbcUrl = "jdbc:mysql://localhost/sample?user=testuser&password=secrepwd";
Обратите внимание, что мы включили все параметры, необходимые для подключения, включая имя хоста (локальный), имя пользователя и пароль. (Включение пароля, подобного этому, НЕ является хорошей практикой, альтернативы см. Ниже.)
Используя это JDBCURL, Вот полная программа для проверки подключения.
public class Sample
{
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch(ClassNotFoundException ex) {
System.err.println("Unable to load MySQL Driver");
}
}
static public void main(String[] args) throws Exception
{
String jdbcUrl = "jdbc:mysql://localhost/sample?user=testuser&password=securepwd";
Connection con = DriverManager.getConnection(jdbcUrl);
System.out.println("Connected!");
con.close();
}
}
Обратите внимание, что соединение с базой данных является ценным ресурсом в программе и должно быть правильно закрыто, как указано выше. Приведенный выше код, однако, не закрывает соединение в случае исключения. Чтобы закрыть соединение на нормальном или ненормальном выходе, используйте следующую схему:
try(Connection con = DriverManager.getConnection(jdbcUrl)) {
System.out.println("Connected!");
}
Как отмечалось выше, вставлять пароль в URL JDBC — плохая идея. Чтобы указать имя пользователя и пароль напрямую, вы можете использовать следующую опцию подключения.
String jdbcUrl = "jdbc:mysql://localhost/sample";
try(Connection con = DriverManager.getConnection(jdbcUrl, "testuser", "securepwd")) {
}
Запросы к базе данных с Java
Теперь, когда соединение с базой данных установлено, давайте посмотрим, как выполнить запрос, такой как запрос версии базы данных:
select version();
Запрос выполняется в Java следующим образом. утверждение Объект создан, и запрос выполняется с использованием ExecuteQuery () метод, который возвращает ResultSet.
String queryString = "select version()";
Statement stmt = con.createStatement();
ResultSet rset = stmt.executeQuery(queryString);
Распечатать версию с ResultSet следующее. 1 ссылается на индекс столбца в результатах, начиная с 1.
while ( rset.next()) {
System.out.println("Version: " + rset.getString(1));
}
После обработки результатов объекты должны быть закрыты.
rset.close();
stmt.close();
И это охватывает все, что нужно для подключения к MySQL из Java и выполнения простого запроса.
Вы использовали JDBC с MySQL в своих проектах? Какие проблемы у вас возникли с базами данных и Java? Пожалуйста, дайте нам знать в комментариях ниже.