Урок 33: Выполнение запросов
В этом уроке мы подробно рассмотрим выполнение SQL-запросов с использованием JDBC. SQL-запросы могут включать выборку данных (SELECT), вставку (INSERT), обновление (UPDATE) и удаление (DELETE). Использование JDBC позволяет Java-приложениям взаимодействовать с реляционными базами данных, выполняя различные операции с данными.
Выборка данных (SELECT)
Для выполнения запросов на выборку данных используется метод executeQuery
объекта Statement
. Этот метод возвращает объект ResultSet
, который содержит результаты запроса. Пример:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SelectQueryExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "password";
try {
Connection connection = DriverManager.getConnection(url, user, password);
Statement statement = connection.createStatement();
String query = "SELECT * FROM users";
ResultSet resultSet = statement.executeQuery(query);
while (resultSet.next()) {
System.out.println("ID: " + resultSet.getInt("id") + ", Имя: " + resultSet.getString("name"));
}
resultSet.close();
statement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Результат выполнения
ID: 1, Имя: Иван
ID: 2, Имя: Мария
ID: 3, Имя: Петр
Вставка данных (INSERT)
Для выполнения запросов на вставку данных используется метод executeUpdate
объекта Statement
. Пример:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class InsertQueryExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "password";
try {
Connection connection = DriverManager.getConnection(url, user, password);
Statement statement = connection.createStatement();
String query = "INSERT INTO users (id, name) VALUES (4, 'Алексей')";
int rowsAffected = statement.executeUpdate(query);
System.out.println("Вставлено строк: " + rowsAffected);
statement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Результат выполнения
Обновление данных (UPDATE)
Для выполнения запросов на обновление данных используется метод executeUpdate
объекта Statement
. Пример:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class UpdateQueryExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "password";
try {
Connection connection = DriverManager.getConnection(url, user, password);
Statement statement = connection.createStatement();
String query = "UPDATE users SET name = 'Мария Иванова' WHERE id = 2";
int rowsAffected = statement.executeUpdate(query);
System.out.println("Обновлено строк: " + rowsAffected);
statement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Результат выполнения
Удаление данных (DELETE)
Для выполнения запросов на удаление данных используется метод executeUpdate
объекта Statement
. Пример:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class DeleteQueryExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "password";
try {
Connection connection = DriverManager.getConnection(url, user, password);
Statement statement = connection.createStatement();
String query = "DELETE FROM users WHERE id = 4";
int rowsAffected = statement.executeUpdate(query);
System.out.println("Удалено строк: " + rowsAffected);
statement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Результат выполнения
Упражнения
Упражнение 1: Вставка данных в таблицу
Напишите программу, которая подключается к базе данных и выполняет SQL-запрос для вставки новой записи в таблицу products
. Данные для вставки: ID = 1, Название = "Телефон", Цена = 599.99.
Решение:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class InsertProductExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "password";
try {
Connection connection = DriverManager.getConnection(url, user, password);
Statement statement = connection.createStatement();
String query = "INSERT INTO products (id, name, price) VALUES (1, 'Телефон', 599.99)";
int rowsAffected = statement.executeUpdate(query);
System.out.println("Вставлено строк: " + rowsAffected);
statement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Объяснение: Программа подключается к базе данных и выполняет запрос на вставку новой записи в таблицу products
. Количество вставленных строк выводится в консоль.
Упражнение 2: Обновление данных в таблице
Напишите программу, которая подключается к базе данных и выполняет SQL-запрос для обновления цены продукта с ID = 1 на 499.99.
Решение:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class UpdateProductPriceExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "password";
try {
Connection connection = DriverManager.getConnection(url, user, password);
Statement statement = connection.createStatement();
String query = "UPDATE products SET price = 499.99 WHERE id = 1";
int rowsAffected = statement.executeUpdate(query);
System.out.println("Обновлено строк: " + rowsAffected);
statement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Объяснение: Программа подключается к базе данных и выполняет запрос на обновление цены продукта с ID = 1. Количество обновленных строк выводится в консоль.