2.77M
Category: databasedatabase

Java___SQL_253457_8d0d75-257946-e5f71e

1.

QA JAVA. Basic
Java +SQL
otus.ru

2.

Проверить, идет ли запись
Меня хорошо
видно && слышно?
Ставим “+”, если все
хорошо “-”, если есть
проблемы

3.

Тема вебинара
Java + SQL
Яна Телегина
Руководитель отдела автоматизации
тестирования
10 лет в автоматизации тестирования
Часто работаю на проект внедряя автоматизацию с нуля.
Руковожу отделом автоматизации тестирования в продуктовой
компании
89803442058
[email protected]
telegram

4.

Правила
вебинара
Условные
обозначения
Активно участвуем
Индивидуально
Otus. QA-Java-Basic
Время, необходимое
на активность
Пишем в чат
Задаем вопрос в чат или голосом
Вопросы вижу в чате, могу ответить
не сразу
Говорим голосом
Документ
Ответьте себе или
задайте вопрос

5.

Цели вебинара
После занятия вы сможете
1.
Узнать что такое JDBC
2.
Уметь подключить БД к проекту
3.
Выполнить некоторые запросы в БД из кода
4.
Извлечь и сохранить данные

6.

Карта курса
Знакомство с
тестированием
Синтаксис JAVA
UI автотесты
SQL
Bash scripting
Проектная работа

7.

JAVA + SQL

8.

JDBC
Java Database Connectivity (JDBC) – стандарт взаимодействия между
базами данных и Java-приложениями.
JDBC API – содержит набор классов и интерфейсов, определяющий
Java-ориентированный доступ к базам данных. Объявлены в пакетах
java.sql и javax.sql
JDBC-driver – специфический для каждой базы данных драйвер, с
помощью которого JDBC превращает вызовы уровня API в «родные»
команды сервера баз данных.
8

9.

Регистрация драйвера
В ранних версиях JDBC необходимо было инициализировать
драйвер следующим вызовом:
Class.forName("com.mysql.cj.jdbc.Driver");
Начиная с версии JDBC 4.0 все драйверы, находящиеся в
classpath, загружаются автоматически.
* Classpath – это параметр, который указывает приложениям где искать пользовательские классы.
Может быть задан в переменной окружения ОС CLASSPATH, и в аргументе командной строки -cp
(синоним -classpath). Второй способ предпочтительнее, потому что позволяет устанавливать разные
значения для разных приложений. Значение по умолчанию – текущая директория.
9

10.

Регистрация драйвера
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
10

11.

Регистрация драйвера. Gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath group: 'mysql',
name: 'mysql-connector-java',
version: '8.0.26'
}
}
dependencies {
implementation group: 'mysql',
name: 'mysql-connector-java',
version: '8.0.26'
}
11

12.

Создание подключения
java.sql.Connection – интерфейс, реализующие его объекты представляют
собой установленное соединение.
String CONNECTION_URL = "jdbc:mysql://localhost:3306/db";
String CONNECTION_URL =
"jdbc:postgresql://localhost:5432/postgres";
try (Connection connection = DriverManager
.getConnection(CONNECTION_URL, USER, PASSWORD)) {
// use connection here
}
12

13.

Выполнение запросов. Statement
java.sql.Statement – интерфейс, предназначенный для формирования
SQL-команд, которые не содержат параметров, и для получения
результата их выполнения
try (Statement stmt = connection.createStatement()) {
// use stmt here
}
13

14.

Выполнение запросов. Statement
String createTableSql = "CREATE TABLE IF NOT EXISTS employees"
+ "(id int PRIMARY KEY AUTO_INCREMENT, name varchar(30),"
+ "position varchar(30), salary double)";
try (Statement stmt = connection.createStatement()) {
stmt.execute(createTableSql);
}
14

15.

Выполнение запросов. Statement
String insertSql = "INSERT INTO employees(name, position, salary)"
+ " VALUES('simon', 'developer', 2000), ('dave', 'tester', 2000)";
try(Statement stmt = connection.createStatement()) {
int res = stmt.executeUpdate(insertSql);
System.out.println("INSERT RESULT: " + res);
}
15

16.

Выполнение запросов. Statement
String selectSql = "SELECT * FROM employees";
try (ResultSet resultSet = stmt.executeQuery(selectSql)) {
// use resultSet here
}
16

17.

Выполнение запросов. PreparedStatement
java.sql.PreparedStatement – интерфейс, предназначенный для
формирования SQL-команд, содержащих параметры. Параметры
указываются знаком “?”.
String query = "select * from passenger where name = ?";
try (PreparedStatement statement =
connection.prepareStatement(query)) {
statement.setString(1, "Igor Petrov");
ResultSet resultSet = statement.executeQuery();
}
17

18.

Извлечение результатов. ResultSet
String query = "select name, passport_number from passenger";
try(ResultSet resultSet = statement.executeQuery();
while (resultSet.next()) {
String rowData = String.format("Name: %s, Passport: %s",
resultSet.getString("name"),
resultSet.getString(2));
System.out.println(rowData);
}
}
18

19.

Транзакции
public void setAutoCommit(boolean autoCommit)
public void commit()
public void rollback()
public void rollback(Savepoint savepoint)
public Savepoint setSavepoint(String name)
public void releaseSavepoint(Savepoint savepoint)
19

20.

Транзакции
• boolean
autoCommit =
connection.getAutoCommit();
• try {
• connection.setAutoCommit(false);
pstmt.executeUpdate();
pstmt2.executeUpdate(); connection.commit();
}
catch
(SQLException
exc)
{
exc.printStackTrace();
connection.rollback();
•}
finally
{
• connection.setAutoCommit(autoCommit);
•}
20

21.

22.

23.

Ставим “+”,
если вопросы есть
?
Ставим “–”,
если вопросов нет

24.

Рефлексия
С какими впечатлениями уходите с вебинара?
Как будете применять на практике то, что узнали на вебинаре?

25.

Заполните, пожалуйста,
опрос о занятии
по ссылке в чате

26.

Спасибо за внимание!
Приходите на следующие вебинары
Телегина Яна Михайловна
Руководитель отдела автоматизации тестирования
89803442058
[email protected]
telegram
English     Русский Rules