Введение Технология ADO.NET ADO.NET ADO.NET – это программный

Скачать презентацию Введение Технология ADO.NET ADO.NET ADO.NET – это программный Скачать презентацию Введение Технология ADO.NET ADO.NET ADO.NET – это программный

35582-tehnologiya_ado.ppt

  • Количество слайдов: 28

>Введение Технология ADO.NET Введение Технология ADO.NET

>ADO.NET ADO.NET – это программный интерфейс (API), предназначенный для обеспечения доступа к данным. Поддерживаемые ADO.NET ADO.NET – это программный интерфейс (API), предназначенный для обеспечения доступа к данным. Поддерживаемые технологии SQL Server Oracle OLE DB XML 2

>Модели доступа к данным Присоединенная Предполагается наличие постоянного соединения между источником и приемником данных Модели доступа к данным Присоединенная Предполагается наличие постоянного соединения между источником и приемником данных вне зависимости от того, осуществляется ли непосредственная передача данных в текущий момент времени Отсоединенная Соединение устанавливается только на момент обмена данными 3

>Присоединенная модель Примеры Интернет-соединение Телефонный разговор Чат Удаленная хирургия Правительственные линии связи  4 Присоединенная модель Примеры Интернет-соединение Телефонный разговор Чат Удаленная хирургия Правительственные линии связи 4

>Присоединенная модель Плюсы При запросе данных не тратится время на установку соединения Всегда доступны Присоединенная модель Плюсы При запросе данных не тратится время на установку соединения Всегда доступны свежие данные Минусы Необходимо постоянное наличие соединения и средств для его обеспечения При отсутствии необходимости передачи данных соединение все равно остается занятым 5

>Отсоединенная модель Примеры Почтовый сервер Доступ к web-приложениям Библиотека Системы контроля версий  6 Отсоединенная модель Примеры Почтовый сервер Доступ к web-приложениям Библиотека Системы контроля версий 6

>Отсоединенная модель Плюсы Более низкие требования к соединению Можно работать при отсутствии связи Можно Отсоединенная модель Плюсы Более низкие требования к соединению Можно работать при отсутствии связи Можно обработать больше запросов Минусы Больше времени непосредственно на доступ к данным Локальная копия данных может быть неактуальной Возможно наличие конфликтов 7

>Классы ADO.NET Основные классы доступа к данным Connection (SqlConnection) Command (SqlCommand) Parameter (SqlParameter) DataReader Классы ADO.NET Основные классы доступа к данным Connection (SqlConnection) Command (SqlCommand) Parameter (SqlParameter) DataReader (SqlDataReader) Transaction (SqlTransaction) 8

>Доступ к базе Порядок действий: Получить строку подключения Создать объект SqlCommand (задать ему строку Доступ к базе Порядок действий: Получить строку подключения Создать объект SqlCommand (задать ему строку подключения, собственно SQL команду, параметры) Установить соединение Скачать или записать данные (выполнить команду) Разорвать соединение 9

>Строка подключения Место хранения:  Конфигурационный файл Ввод данных пользователем Основные элементы Data Source Строка подключения Место хранения: Конфигурационный файл Ввод данных пользователем Основные элементы Data Source Initial Catalog Integrated Security User ID Password 10

>Строка подключений Формат «Setting1 = Value1; Setting2 = Value2;…» Пример “Data Source=.\SqlExpress; Initial Catalog=Northwind; Строка подключений Формат «Setting1 = Value1; Setting2 = Value2;…» Пример “Data Source=.\SqlExpress; Initial Catalog=Northwind; User ID=User; Password=12345” “Data Source=Nt-server; Initial Catalog=Base; Integrated Security=True” 11

" src="https://present5.com/presentacii-2/20171213\35582-tehnologiya_ado.ppt\35582-tehnologiya_ado_12.jpg" alt=">Строка подключения в конфигурационном файле " /> Строка подключения в конфигурационном файле 12

>Загрузка строки подключения string connectionString = System.Configuration.ConfigurationManager.    ConnectionStrings[ Загрузка строки подключения string connectionString = System.Configuration.ConfigurationManager. ConnectionStrings["connectionString"]. ConnectionString; 13

>Неправильная установка соединения SqlConnection connection = new SqlConnection(connectionString);  connection.Open();  // действия с Неправильная установка соединения SqlConnection connection = new SqlConnection(connectionString); connection.Open(); // действия с базой connection.Close(); 14

>Правильная установка соединения (вариант 1) try {  SqlConnection connection = new  SqlConnection(connectionString); Правильная установка соединения (вариант 1) try { SqlConnection connection = new SqlConnection(connectionString); connection.Open(); // действия с базой } finally { connection.Close(); } 15

>Правильная установка соединения (вариант 2) Интерфейс IDisposable  using(SqlConnection connection = new  SqlConnection(connectionString)) Правильная установка соединения (вариант 2) Интерфейс IDisposable using(SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); // действия с базой } 16

>Класс SqlCommand Основные свойства CommandText CommandType (Storage Procedure, Text, TableDirect) Connection Parameters  17 Класс SqlCommand Основные свойства CommandText CommandType (Storage Procedure, Text, TableDirect) Connection Parameters 17

>Класс SqlCommand Основные методы ExecuteNonQuery (int) ExecuteReader (DataReader) ExecuteScalar (object) ExecuteXmlReader (XmlDataReader) 18 Класс SqlCommand Основные методы ExecuteNonQuery (int) ExecuteReader (DataReader) ExecuteScalar (object) ExecuteXmlReader (XmlDataReader) 18

>Класс SqlDataReader Свойства FieldCount HasRows Основные методы [] параметры int и string Get…(int columnNumber) Класс SqlDataReader Свойства FieldCount HasRows Основные методы [] параметры int и string Get…(int columnNumber) NextResult Read 19

>Пример string connectionString = System.Configuration.ConfigurationManager.   ConnectionStrings[ Пример string connectionString = System.Configuration.ConfigurationManager. ConnectionStrings["connectionString"].ConnectionString; using(SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand(); command.Connection = connection; command.CommandType = CommandType.Text; command.CommandText = "SELECT * FROM users"; connection.Open(); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { Console.WriteLine("{0} - {1}", reader["name"], reader["surname"]); } } 20

>SQL Injection Грубейшая ошибка: command.CommandText = SQL Injection Грубейшая ошибка: command.CommandText = "SELECT * FROM users WHERE name = ‘" + txtName + "’"; Причина Иванов’; DROP TABLE users; SELECT * FROM users WHERE name=‘user Правильное решение command.CommandText = "SELECT * FROM users WHERE name = @name"; command.Parameters.Add(new SqlParameter("@name", txtName.Text)); Хранимые процедуры 21

>Трехслойная архитектура Presentation Layer (PL) Business Logic Layer (BLL) Data Access Layer (DAL) Трехслойная архитектура Presentation Layer (PL) Business Logic Layer (BLL) Data Access Layer (DAL) 22

>Presentation Layer Цели Отображение данных пользователю Манипуляции, связанные с отображением (сортировка, фильтрация) Получение данных Presentation Layer Цели Отображение данных пользователю Манипуляции, связанные с отображением (сортировка, фильтрация) Получение данных Первичная «защита от дурака» Чего быть не может Обращений к базе Операций, имеющих отношение к логике работы программы 23

>Business Logic Layer Цели Предоставление данных PL Функциональное обеспечение работы системы (вся логика) Чего Business Logic Layer Цели Предоставление данных PL Функциональное обеспечение работы системы (вся логика) Чего быть не может Обращения к базе данных Любого кода, имеющего отношения к интерфейсу (Console.WriteLine, TextBox1.Text…) 24

>Data Access Layer Цели Обращения к базе (чтение/сохранение данных) Чего быть не может Функциональной Data Access Layer Цели Обращения к базе (чтение/сохранение данных) Чего быть не может Функциональной логики Любого кода, имеющего отношения к интерфейсу (Console.WriteLine, TextBox1.Text…) 25

>Два подхода к формированию Бизнес-логики Anemic – есть сущности (Entities) и есть код для Два подхода к формированию Бизнес-логики Anemic – есть сущности (Entities) и есть код для их обработки (Logic Classes) Rich – Entities и Logic Classes объединены 26

>27 27

>Presentation Title For more information, please contact: Name Title EPAM Systems, Inc. Address City, Presentation Title For more information, please contact: Name Title EPAM Systems, Inc. Address City, State, Zip Code Phone: Fax: Email: http://www.epam.com