Похожие презентации:
Java___SQL_253457_8d0d75-257946-e5f71e
1.
QA JAVA. BasicJava +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 + SQL8.
JDBCJava 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.
Регистрация драйвера. Gradlebuildscript {
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.
Выполнение запросов. Statementjava.sql.Statement – интерфейс, предназначенный для формирования
SQL-команд, которые не содержат параметров, и для получения
результата их выполнения
try (Statement stmt = connection.createStatement()) {
// use stmt here
}
13
14.
Выполнение запросов. StatementString 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.
Выполнение запросов. StatementString 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.
Выполнение запросов. StatementString selectSql = "SELECT * FROM employees";
try (ResultSet resultSet = stmt.executeQuery(selectSql)) {
// use resultSet here
}
16
17.
Выполнение запросов. PreparedStatementjava.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.
Извлечение результатов. ResultSetString 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