Урок 34: Обработка результатов
Обработка результатов SQL-запросов в JDBC осуществляется с помощью объекта ResultSet
. Этот объект позволяет получать данные, возвращаемые запросом, и предоставляет методы для навигации и извлечения данных. В этом уроке мы рассмотрим основные методы ResultSet
, такие как next()
, getInt()
, getString()
и другие, а также научимся обрабатывать результаты запросов на выборку данных.
Основные методы ResultSet
Основные методы, используемые для работы с ResultSet
:
next()
- перемещает курсор на одну строку вперед
getInt(columnLabel)
- извлекает значение из текущей строки как int
getString(columnLabel)
- извлекает значение из текущей строки как String
Пример обработки результатов запроса:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ResultSetExample {
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()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("ID: " + id + ", Имя: " + name);
}
resultSet.close();
statement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Результат выполнения
ID: 1, Имя: Иван
ID: 2, Имя: Мария
ID: 3, Имя: Петр
Обработка данных из нескольких таблиц
При выполнении запросов, объединяющих данные из нескольких таблиц, ResultSet
позволяет извлекать данные по столбцам из различных таблиц. Пример:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JoinQueryExample {
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 u.id, u.name, o.order_id FROM users u JOIN orders o ON u.id = o.user_id";
ResultSet resultSet = statement.executeQuery(query);
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
int orderId = resultSet.getInt("order_id");
System.out.println("ID: " + id + ", Имя: " + name + ", Order ID: " + orderId);
}
resultSet.close();
statement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Результат выполнения
ID: 1, Имя: Иван, Order ID: 1001
ID: 2, Имя: Мария, Order ID: 1002
ID: 3, Имя: Петр, Order ID: 1003
Упражнения
Упражнение 1: Обработка данных из таблицы products
Напишите программу, которая подключается к базе данных и выполняет SQL-запрос для извлечения всех данных из таблицы products
. Выведите в консоль ID продукта, его название и цену.
Решение:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SelectProductsExample {
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 products";
ResultSet resultSet = statement.executeQuery(query);
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
double price = resultSet.getDouble("price");
System.out.println("ID: " + id + ", Название: " + name + ", Цена: " + price);
}
resultSet.close();
statement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Объяснение: Программа подключается к базе данных и выполняет запрос для извлечения всех данных из таблицы products
. Полученные данные выводятся в консоль.
Упражнение 2: Обработка данных из объединенных таблиц
Напишите программу, которая подключается к базе данных и выполняет SQL-запрос для объединения таблиц customers
и orders
. Выведите в консоль ID клиента, его имя и номер заказа.
Решение:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JoinCustomersOrdersExample {
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 c.id, c.name, o.order_id FROM customers c JOIN orders o ON c.id = o.customer_id";
ResultSet resultSet = statement.executeQuery(query);
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
int orderId = resultSet.getInt("order_id");
System.out.println("ID клиента: " + id + ", Имя: " + name + ", Номер заказа: " + orderId);
}
resultSet.close();
statement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Объяснение: Программа подключается к базе данных и выполняет запрос для объединения таблиц customers
и orders
. Полученные данные выводятся в консоль.