- Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathSQLQueryApp_9.java
More file actions
Latest commit
74 lines (66 loc) · 3.93 KB
/
Copy pathSQLQueryApp_9.java
File metadata and controls
74 lines (66 loc) · 3.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/*
Исследование методов интерфейса Statement:
- *.setFetchSize(int rows) - Дает драйверу JDBC подсказку о количестве строк, которые должны
быть извлечены из базы данных, когда требуется больше строк для
объектов ResultSet, сгенерированных этим оператором;
- *.setQueryTimeout(int seconds) - Устанавливает количество секунд, в течение которых драйвер
будет ожидать выполнения объекта Statement, до заданного
количества секунд;
- *.setMaxRows(int max) - Устанавливает ограничение на максимальное количество строк, которое
может содержать любой объект ResultSet, сгенерированный этим объектом
Statement, до заданного числа;
Не забываем подключить в настройках
драйвер соединения с базой данных (*.jar),
который лежит в папке 'lib' проекта 'JDBCLessonOne',
иначе словим исключение. Не забываем пометить
папку 'resources', как ресурсную.
*/
importconnection_util.ConnectionManager;
importjava.sql.SQLException;
importjava.sql.Timestamp;
importjava.time.LocalDate;
importjava.time.LocalDateTime;
importjava.util.ArrayList;
importjava.util.List;
publicclassSQLQueryApp_9 {
publicstaticvoidmain(String[] args) throwsSQLException {
/* Подробный разбор кода приведенного ниже см. в SQLQueryApp_8 */
LocalDateTimemy_date_start = LocalDate.of(2020, 1, 1).atStartOfDay();
LocalDateTimemy_date_finish = LocalDateTime.now();
Listresult = getFlightsBetween(my_date_start, my_date_finish);
System.out.println(result);
}
privatestaticList<Long> getFlightsBetween(LocalDateTimestart, LocalDateTimeend) throwsSQLException {
/* Подготавливаем SQL запрос в котором уже два знака '?' */
Stringmy_sql_query = """
SELECT id
FROM flight_repository.flight
WHERE departure_date BETWEEN ? AND ?
""";
List<Long> result = newArrayList<>();
/* Стартуем соединение с базой данных и создаем объект PrepareStatement */
try (varconnection = ConnectionManager.getBaseConnection();
varpreparedStatement = connection.prepareStatement(my_sql_query))
{
/*
Интерфейс PrepareStatement наследует много
методов от интерфейса Statement, в том числе
и приведенные (в описании) ниже в коде.
*/
preparedStatement.setFetchSize(3);
preparedStatement.setQueryTimeout(10);
preparedStatement.setMaxRows(3);
/* Работа приведенного ниже кода более подробно разобрана в SQLQueryApp_8 */
System.out.println(preparedStatement);
preparedStatement.setTimestamp(1, Timestamp.valueOf(start));
System.out.println(preparedStatement);
preparedStatement.setTimestamp(2, Timestamp.valueOf(end));
System.out.println(preparedStatement);
varresultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
result.add(resultSet.getLong("id"));
}
}
returnresult;
}
}