Принципы работы с данными. Введение в ADO.NET. Соединение с базой данных. Выполнение операций в соединенной среде 331 Современные технологии программирования Понятие «База данных» База данных – это совокупность связанных данных, организованных по определенным правилам, предусматривающим общие принципы описания, хранения и манипулирования, независимая от прикладных программ. Отличительные признаки БД: База данных хранится и обрабатывается в вычислительной системе Данные в базе данных логически структурированы (систематизированы) База данных включает метаданные, описывающие логическую структуру БД 2 Система управления базами данных Система управления базами данных (СУБД) – это специализированная программа (чаще комплекс программ), предназначенная для организации и ведения базы данных Cовременная СУБД содержит следующие компоненты: ядро процессор языка базы данных подсистему поддержки времени исполнения сервисные программы 3 Компоненты СУБД Подсистема времени исполнения Программа в машинном коде Операторы языка общего пользования Процессор языка запросов Программа во внутреннем коде СУБД Ядро СУБД Операторы языка управления данными Операторы языка общего пользования Физическая база данных 4 Функции компонентов обработки баз данных Приложение базы данных Пользователь 1. Создание и обработка форм 2. Создание и передача запросов 3. Создание и обработка отчетов 4. Выполнение логики приложения 5. Управление приложением СУБД 1. Создание базы данных 2. Создание таблиц 3. Создание поддерживающих структур 4. Чтение данных из базы 5. Изменение данных базы 6. Поддержка структур базы данных 7. Установка правил 8. Управление параллельной обработкой 9. Обеспечение безопасности 10. Сохранение и извлечение копий База данных 1. Данные пользователя 2. Метаданные 3. Индексы и регулярные структуры 4. Хранимые процедуры 5. Триггеры 6. Метаданные приложения 5 Проектирование баз данных Проектирование баз данных – процесс решения класса задач, связанных с созданием баз данных Основные задачи: обеспечение хранения в БД необходимой информации обеспечение возможности получения данных по всем необходимым запросам сокращение избыточности и дублирования данных обеспечение целостности данных Основные этапы проектирования баз данных: Концептуальное (инфологическое) проектирование Логическое (даталогическое) проектирование Физическое проектирование 6 Язык SQL SQL является инструментом, предназначенным для обработки и чтения данных, содержащихся в компьютерной базе данных SQL-запрос База данных Система управления базой данных Данные 7 SQL Язык SQL делится на несколько частей: операторы определения данных операторы манипуляции данными операторы определения доступа к данным операторы управления транзакциями операторы определения курсора Ключевое слово Операторы Название таблицы SELECT * FROM Orders WHERE ORDER_ID > 1024 Ключевое слово Название столбца 8 Процедурные расширения SQL популярных СУБД СУБД Расширение InterBase/Firebird PSQL – Procedural SQL IBM DB2 SQL PL – SQL Procedural Language (расширяет SQL/PSM) MS SQL Server/ Transact-SQL Sybase ASE MySQL SQL/PSM – SQL/Persistent Stored Module (соответствует стандарту SQL:2003) Oracle PL/SQL – Procedural Language/SQL (основан на языке Ada) PostgreSQL PL/pgSQL – Procedural Language/PostgreSQL Structured Query Language (очень похож на Oracle PL/SQL) 9 Доступ к данным в .NET ADO.NET – основная модель доступа к данным для приложений, основанных на Microsoft .NET Linq – проект Microsoft по добавлению синтаксиса языка запросов, напоминающего SQL, в языки программирования платформы .NET Framework 3.5 ADO.NET Entity Framework – объектноориентированная технология доступа к данным, является ORM-решением для .NET Framework 3.5 10 ADO.NET Entity Framework ADO.NET Entity Framework (EF) – объектноориентированная технология доступа к данным, является object-relational mapping (ORM) решением для .NET Framework от Microsoft Возможность взаимодействия посредством LINQ to Entities и с использованием Entity SQL Используется ADO.NET Data Services и связка из Windows Communication Foundation и Windows Presentation Foundation 11 ADO.NET ADO.NET представляет собой набор библиотек, входящих в Microsoft .NET Framework предназначенных для взаимодействия с различными хранилищами данных из .NET приложений Библиотеки ADO.NET включают все необходимые классы для подключения к источникам данных практически произвольного формата, выполнения запросов к этим источникам и получения результата Возможность работы с отсоединенными источниками данных 12 Компоненты Entity Framework Модель Entity Data Model (EDM) Компонент Object Services Компонент LINQ to Entities Язык Entity SQL Поставщик EntityClient Компонент метаданных ADO.NET Набор средств, которые создают сопоставления и разделяемые классы, представляющие сущности концептуальной модели Поставщик данных SqlClient 13 Отсоединенная модель программирования В ADO .NET используется модель доступа – доступ к отсоединенным данным. При этом соединение устанавливается лишь на то время, которое необходимо для проведения определенной операции над базой данных. Возникает возможность поддержки большего количества параллельно работающих пользователей за счет постепенного увеличения количества клиентских компьютеров. Это преимущество имеет особенно большое значение при создании Web-приложений. Провайдеры данных ADO.NET Несмотря на подчеркнутое значение отсоединенной модели программирования, для извлечения, обновления, вставки и удаления данных необходимо подключиться к физической базе данных. Программное обеспечение ADO.NET для подсоединения и взаимодействия с физической базой данных называется провайдером данных ADO.NET. Провайдер данных (data provider) — это управляемый код .NET, который эквивалентен провайдеру OLEDB или драйверу ODBC. Провайдер данных состоит из нескольких объектов, которые реализуют необходимую функциональность в соответствии с определениями своих классов и интерфейсов. Провайдеры данных В настоящее время существует три разных провайдера данных ADO.NET, каждый из которых определен в своем собственном пространстве имен. Для всех объектов в этих пространствах имен используются следующие префиксы: OleDb, Sql и Odbc. Провайдер данных SqICIient Оптимизирован для работы с SQL Server версии 7.0 (и выше) и позволяет добиться более высокой производительности по следующим причинам: взаимодействует с базой данных непосредственно через собственный протокол табличной передачи данных (Tabular Data Stream — TDS), а не через OLEDB с отображением интерфейса OLEDB на протокол TDS; исключает накладные расходы, связанные с использованием СОМслужб взаимодействия; отсутствуют ненужные функции, которые не поддерживаются в SQL Server (объекты этого провайдера данных находятся в пространстве имен System. Data. SqlClient) . Провайдер данных Oledb Основан на существующем СОМ-поставщике OLEDB и COM-службах платформы .NET Framework, предназначенных для доступа к базе данных. Этот провайдер данных используется для работы с SQL Server более ранних версий, чем 7.0. Он позволяет осуществлять доступ к любой базе данных, для которой имеется поставщик OLEDB. Объекты этого провайдера данных находятся в пространстве имен System. Data. Oledb. Провайдер данных Odbc Используется для доступа к базам данных, которые не имеют собственного провайдера данных .NET или СОМпоставщика OLEDB. Иногда драйвер ODBC демонстрирует более высокую производительность, чем драйвер OLEDB, поэтому для сравнения их фактической производительности при работе с конкретной базой данных рекомендуется провести ряд тестов. Объекты этого провайдера данных находятся в пространстве имен System. Data. Odbc Пространства имен Таким образом уровень включает несколько пространств имен (групп классов и других определений), предназначенных для организации доступа к данным: System.Data, System.OleDb и System.Data.SQLCIient. Основные объекты провайдера данных Connection Устанавливает соединение с указанным источником данных Command Выполняет команду по отношению к источнику данных. Содержит коллекцию объектов Parameters и методы для выполнения команд разного типа DataReader Считывает данные и возвращает из источника поток данных, предназначенный только для чтения и только в одном направлении DataAdapter Соединяет набор данных DataSet и источник данных для извлечения и сохранения данных Иерархия объектов ADO.NET ADO.NET DataSet Connection Transaction DataTable DataAdapter DataRow Command DataColumn Parameter DataReader DataView Constraint DataRelation 22 23 Присоединенный режим Объект Connection представляет соединение с источником данных. Объект Transaction позволяет осуществлять транзакции. Объект DataAdapter представляет собой связующее звено между отсоединенными объектами ADO.NET и базой данных. С его помощью осуществляется заполнение таких объектов как DataSet или DataTable значениями, полученными в результате выполнения запроса к базе данных для последующей автономной работы с ними. Помимо этого, DataAdapter реализует эффективный механизм выполнения обновления данных, хранимых в базе данных изменениями, внесенными в данные объектов DataSet и DataTable. Объект Command представляет запрос к источнику данных, вызов хранимой процедуры или прямой запрос на возврат содержимого конкретной таблицы. Объект Parameter позволяет вводить в запрос элемент, значение которого может быть задано непосредственно перед исполнением запроса. Объект DataReader предназначен для максимально быстрой выборки и просмотра возвращаемых запросом записей. 24 Отсоединенный режим Объект DataSet представляет собой отсоединенный набор данных, который может рассматриваться как контейнер для объектов DataTable. DataSet позволяет организовывать внутри себя структуру, полностью соответствующую реальной структуре таблиц и связей между ними в БД. Объект DataTable позволяет просматривать данные в виде наборов записей и столбцов. Объект DataColumn представляет собой столбец объекта DataTable. Набор же всех столбов объекта DataTable представляет собой коллекцию Columns. Объект DataRow представляет собой строку объекта DataTable. Набор всех строк этого объекта представляет собой коллекцию Rows. Объект DataView предназначен для организации возможности просмотра содержимого DataTable различными способами. Это относится к таким операциям, как сортировка и фильтрация записей. Объект DataRelation представляет собой описание связей между таблицами реляционной базы данных. Он предоставляется объектом DataSet и позволяет организовывать взаимосвязи между таблицами отсоединенного набора данных объекта DataSet. Уровни моделей поставщиков ADO.NET Приложение .NET Поставщик SQL Server для .NET Поставщик OleDb для .NET Поставщик Oracle для .NET Поставщик OleDb База Данных SQL Server Источник данных База данных Oracle 25 Организация взаимодействия с БД в ADO.NET Устанавливается соединение, открывается подключение к базе данных Выполняется один или несколько запросов Осуществляется отключение от источника данных При необходимости переноса изменений, из отсоединенного набора данных в БД, а также при необходимости просмотра изменений, внесенных в БД другими пользователями, осуществляется подключение к источнику данных, выполняются необходимые действия, после чего производится отключение от БД 26 Транзакции Транзакция – это неделимая, с точки зрения воздействия на СУБД, последовательность операций манипулирования данными Свойства ACID: Атомарность (Atomicity) Согласованность (Consistency) Изоляция (Isolation) Долговечность (Durability) 27 Ссылки 28 Введение в платформу .NET Framework и ASP.NET http://www.intuit.ru/studies/courses/4455/712/lecture/10049 C#. Введение в программирование http://window.edu.ru/resource/674/41674/files/marchenko.pdf Учебник по C# http://www.dotsite.spb.ru/Tutorials/CSharp Visual studio Express http://www.microsoft.com/visualstudio/rus/products/visual-studio-expressproducts В. Фаронов. Программирование на языке C#. ПИТЕР, 2007 Разработка приложений на C# в среде Visual Studio В.М. Снетков http://www.intuit.ru/department/se/csharpvs2005 Обучающие уроки по C# http://www.programmer-lib.ru/csharp.php Спасибо за внимание! 331 Современные технологии программирования