Технология ADO .Net
Предыстория
Работа приложения с данными
Доступ к данным: история
Доступ к данным: проще
ODBC - Open DataBase Connectivity
ODBC
ODBC - Open DataBase Connectivity
DAO
OLE DB - Object Linking and Embedding, Database (Связывание и внедрение объектов )
OLE DB
Как много девушек хороших…
Архитектура ADO.NET
Опреление
ОБЪЕКТНАЯ МОДЕЛЬ ado.net
Подсоединенные объекты
Подсоединенные объекты
ПОСТАВЩИКИ ДАННЫХ .NET -
Поставщики данных, входящие в состав .NET Framework (пример)
Специализированные поставщики (преимущества)
Общие поставщики (преимущества)
Базовые классы
Пример
Зачем ???
Повышенная производительность
Базовые классы
Класс Connection
Класс ConnectionStringBuilder
Класс Command
Класс DataReader
Класс Transaction
Класс Parameter
Класс DataAdapter
Класс ProviderFactory
Отсоединенные объекты
Отсоединённые данные
Соединение с БД
Отсоединенные объекты
Отсоединенные объекты
Базовые классы
Класс DataSet
Класс DataTable
Класс DataColumn
Класс Constraint
Класс DataRow
Класс DataRelation
Класс DataView
Классы DataSet со строгим контролем типов
1.52M
Категория: Базы данныхБазы данных

1_Vvedenie_v_ADO(1)

1. Технология ADO .Net

1

2. Предыстория

2

3. Работа приложения с данными

Большинству приложений
требуется тот или иной тип
доступа к данным
Приложение
XML-хранилища
Центральная
БД
Локальная
БД
3

4. Доступ к данным: история

ODBC (Open DataBase Connectivity)
DAO (Data Access Objects) – объектная модель для
доступа к MS Jet
OLE DB – открытый низкоуровневый интерфейс,
определяющий стандарт доступа к любым данным,
как к реляционным, так и нет (основа инициативы
UDA)
ADO (ActiveX Data Objects) – высокоуровневый
интерфейс к OLE DB
ADO.NET
4

5. Доступ к данным: проще

DAO
ODBC
ADO.NET
RDO
ADO
OLE DB
5

6. ODBC - Open DataBase Connectivity

это технология, которая используется
программами для получения доступа к
различным базам данных (или
источникам данных). Для
использования необходимо, чтобы на
компьютере был установлен требуемый
драйвер ODBC и задан источник
данных.
6

7. ODBC

Всю информацию об источниках данных и
ODBC драйверах Windows хранит в реестре.
Обращение к БД происходит по имени
зарегистрированного источника данных DSN
(Data Source Name), Таким образом, перед
использованием источник данных
необходимо зарегистрировать на компьютере
пользователя.
Зарегистрировать новое подключение можно
через "Администратор источника данных"
7

8. ODBC - Open DataBase Connectivity

Цель – один код для
разных БД
Использует SQL в
качестве рабочего
языка
Построено на наборе
драйверов,
обеспечивающих
доступ к конкретным
СУБД
ODBC
DAO
ADO.NET
RDO
ADO
OLE DB
8

9. DAO

Data Access Objects
DAO
предоставляет модель
ODBC
ADO.NET
объектов для доступа
к локальным базам данных
ADO
(ISAM источники FoxPro,
OLE DB
Paradox,
Lotus 1-2-3 и т.п) или к
базам данных SQL через
Jet (напрямую или через
ODBC)
Только реляционные базы
данных
RDO
9

10. OLE DB - Object Linking and Embedding, Database (Связывание и внедрение объектов )

OLE DB, в отличие от ODBC, является
объектно-ориентированным API,
основанным на COM-интерфейсах.
OLE DB провайдеры могут работать не
только с реляционными базами данных,
но и с любой другой информацией
которую можно представить в
табличном виде
10

11. OLE DB

Для подключения через OLE DB не
требуется регистрация источника
данных в системе, как это принято в
ODBC. Вся информация хранится либо
в файлах с расширением udl, либо
указывается непосредственно в строке
подключения.
11

12. Как много девушек хороших…

DBMS, SQL (DML + DDL), ODBC, DAO,
RDO, UDA, RDS, OLE DB, ADO, …
Мы выбираем !
ADO . NET
DAO
ODBC
ADO.NET
RDO
ADO
OLE DB
12

13. Архитектура ADO.NET

13

14. Опреление

Microsoft ADO.NET (ActiveX Data
Objects) — объектная модель доступа к
данным, набор средств, позволяющих
приложению управлять и
взаимодействовать со своим файловым
или серверным хранилищем данных.
Библиотеки ADO.NET включают классы,
которые служат для подсоединения к
источнику данных, выполнения
запросов и обработки их результатов.
14

15. ОБЪЕКТНАЯ МОДЕЛЬ ado.net

Recordset =
15
DataTable, DataSet, DataAdapter, DataReader.

16. Подсоединенные объекты

(= подключенные объекты)
16

17. Подсоединенные объекты

используются для управления
соединением, транзакциями, для
выборки данных и передачи изменений
они взаимодействуют непосредственно
с БД. Большинство подключенных
объектов реализовано в рамках того,
что называется поставщиками
данных.
17

18. ПОСТАВЩИКИ ДАННЫХ .NET -

ПОСТАВЩИКИ ДАННЫХ .NET .NЕТ data provider - это набор классов,
предназначенных для взаимодействия с
хранилищем данных определенного типа.
18

19.

Архитектура .NET Framework включает в
себя четыре поставщика:
SQL Client .NET Data Provider,
Oracle Client .NET Data Provider,
ODBC .NET Data Provider
OLE DB .NET Data Provider.
Поставщики ODBC и OLE DB .NET
являются связующими компонентами с
действующими технологиями ODBC и OLE
DB. С их помощью можно взаимодействовать
с различными хранилищами данных
посредством ODBCдрайверов и OLE DBпоставщиков соответственно.
19

20. Поставщики данных, входящие в состав .NET Framework (пример)

20

21. Специализированные поставщики (преимущества)

Специализированные поставщики данных
обеспечивают гораздо большую производительность
по сравнению с обобщенными поставщиками.
Специализированные поставщики данных лучше
приспособлены для выполнения функции,
специфичных для конкретных СУБД
Специализированные поставщики данных дают
возможность работать с типами данных,
специфичными для конкретных СУБД. Это во многих
случаях позволяет не выполнять преобразования
данных и избежать потери точности при таких
преобразованиях.
21

22. Общие поставщики (преимущества)

Можно ограничиться минимальным набором
функций, общим для всех источников данных, и
воспользоваться поставщиком данных либо ODBC,
либо OleDb. Для этих поставщиков характерны
слабая производительность и скудные
возможности, но они позволяют написать код, не
зависящий от СУБД.
ADO.NET предоставляет стандартные интерфейсы
и базовые классы для наиболее распространенных
объектов. Работая с типами данных,
представленными либо в базовом интерфейсе,
либо в реализованном интерфейсе, можно
избежать ошибок преобразования типов во время
выполнения. Недостатком этого подхода является
то, что приходится ограничиваться минимальным
набором общих функций.
22

23. Базовые классы

Каждый поставщик данных .NET реализует
одинаковые базовые классы — ProviderFactory,
Connection, ConnectionStringBuilder, Command,
DataReader, Parameter и Transaction, имена которых
зависят от поставщика.
Например, у поставщика SQL Client .NET Data
Provider есть объект SqlConnection, а у поставщика
ODBC .NET Data Provider это объект QdbcConnection.
Независимо от типа поставщика объект
Connection реализует одинаковые базовые функции
посредством одних и тех же базовых интерфейсов.
23

24. Пример

24

25. Зачем ???

В предыдущих технологиях доступа к
данным Microsoft нет отдельных
библиотек и классов для разных
хранилищ данных. Почему компания
решилась на такое существенное
изменение. Основных причин три:
производительность, возможность
расширения и пролиферация.
25

26. Повышенная производительность

Как переход к использованию поставщиков данных .NЕТ
повышает производительность? Создавая ADOкод, вы,
взаимодействуя с БД, по сути, используете интерфейсы ADO в
качестве «посредника». Вы указываете ADO, какой поставщик
следует использовать, и модель передает ему все ваши
вызовы. Поставщик выполняет необходимые действия и
возвращает вам результат через библиотеку ADO. У
поставщиков данных .NET промежуточный уровень отсутствует.
Вы обращаетесь непосредственно к поставщику, и тот
взаимодействует с хранилищем данных с помощью
низкоуровневых интерфейсов программирования последнего.
Взаимодействие с SQL Server в ADO.NET посредством
поставщика SQL Client .NET Provider происходит быстрее, чем в
ADO с помощью OLE DBпоставщика SQL Server, поскольку в
ADO.NET использовано на один уровень меньше.
26

27. Базовые классы

Подсоединенных объектов
27

28. Класс Connection

Применяется для соединения с БД и
отсоединения от нее. С помощью свойств
этого объекта можно задать тип источника,
его расположение пр. Объект Connection
выступает в качестве канала, по которому
другие классы, например DataAdapter и
Command, взаимодействуют с БД для
передачи изменении и выборки их
результатов.
28

29. Класс ConnectionStringBuilder

Новый класс в ADO.NET версии 2.0. Этот класс
облегчает процесс построения строк подключения
для поставщика данных .NET. Каждый класс
ConnectionStringBuilder предоставляет свойства,
которые соответствуют опциям, доступным в той
самой строке подключения поставщика данных.
Создав строку подключения с помощью класса
ConnectionStringBuilder, можно получить доступ к
строке подключения средствами свойства
ConnectionString класса ConnectionStringBuilder.
29

30. Класс Command

Могут осуществлять запрос к БД, вызов
хранимой процедуры или прямой
запрос на возврат содержимого
конкретной таблицы. Команда может
возвратить или нет какой-либо
результат (в зависимости от этого
выполнение объекта Command
запускается различными методами)
30

31. Класс DataReader

Класс DataReader предназначен для максимально
быстрой выборки и просмотра возвращаемых
запросом записей. Он позволяет просматривать
результаты запроса по одной записи за раз. При
переходе к следующей записи содержимое
предыдущей отбрасывается. Объект DataReader не
поддерживает обновление, и возвращаемые им
данные доступны только для чтения. Поскольку класс
DataReader реализует лишь ограниченный набор
функций, он очень прост и имеет высокую
производительность.
31

32. Класс Transaction

используется для выполнения группы команд вместе
как неделимую операцию. Примером может быть
банковское приложение, в котором кредит не
должен появиться, если невозможно выполнить
соответствующий дебет. Классы транзакции
позволяют объединять подобные группы команд и
выполнять их как единое целое. В классе Connection
есть метод BeginTransaction, позволяющий создавать
объекты Transaction. С помощью объекта Transaction
удается подтвердить или отменить все коррективы,
сделанные в ходе транзакции.
32

33. Класс Parameter

Используется для создания
параметризованного объекта Command. Для
использования параметров создайте классы
Parameter, соответствующие всем
параметрам запроса, и добавьте их в класс
Parameters объекта Command. Класс
Parameter ADO.NET предоставляет свойства
и методы, позволяющие определить тип
данных и значение параметров.
33

34. Класс DataAdapter

Класс DataAdapter воплощает новую
концепцию моделей доступа к данным
Microsoft. Это своеобразный шлюз между БД
и отсоединенными объектами модели
ADO.NET. Он устанавливает подключение
или, если подключение уже установлено,
содержит достаточно информации, чтобы
воспринимать данные автономных объектов
и взаимодействовать с базой данных
предписанным образом.
34

35. Класс ProviderFactory

ProviderFactory — новый класс в ADO.NET
версии 2.0, действующий как фабрика
объектов, которая дает возможность
создавать образцы других классов для
поставщика данных .NET. Каждый класс
ProviderFactory предлагает метод Create, в
котором создаются объекты Connection,
ConnectionStringBuilder, Command, Parameter,
DataAdapter и CommandBuilder.
35

36. Отсоединенные объекты

= (автономные) объекты
36

37. Отсоединённые данные

Прежние технологии – постоянное
соединение с источником данных:
Соединение не закрывается до
завершения работы с источником
Чем больше соединений, тем ниже
производительность системы
Плохая масштабируемость приложения
В ADO.NET эти проблемы решаются
использованием по умолчанию
отсоединённых данных
37

38. Соединение с БД

Приложение
Обновление
Запрос
данных
Соединение
Обновленные
Данные
данные
Данные
Соединение
Обновленная
База данных
база данных
Данные
38

39. Отсоединенные объекты

Объекты, составляющие автономную
часть модели ADO.NET, не
взаимодействуют напрямую с
подсоединенными объектами, для этого
используется DataAdapter.
Автономные объекты не должны знать
о базе данных, поэтому они могут
совместно использоваться различными
базами.
39

40. Отсоединенные объекты

Автономные приложения ADO.NET
подключаются к базе как можно позже и
отключаются как можно раньше.
При работе в автономном режиме ADO.NET
ведет пул реальных физических подключений
для различных запросов, таким образом
многократно повышая свою
производительность с помощью подобного
пула подключений.
40

41. Базовые классы

(Отсоединенные объекты)
41

42. Класс DataSet

содержит набор данных.
Данные в нем отсоединены от БД. Все
изменения данных кэшируются в объектах
DataRow.
Кроме того, класс DataSet предоставляет
функции чтения и записи в файл и область
памяти. Можно сохранить только
содержимое объекта DataSet, только его
структуру или и то и другое. ADO.NET
хранит эти данные в виде XML-документа.
42

43.

DataSet
DataTable
DataColumns
Constraints
DataRows
43

44. Класс DataTable

похож на таблицу базы данных. Он состоит
из объектов DataColumn, DataRow и
различных налагаемых па них ограничений.
Он хранит данные в формате строк и
столбцов.
При автономной работе с данными живое
соединение с БД не понадобится, однако вы
не увидите изменений, внесенных другими
пользователями после выполнения вами
исходного запроса.
44

45. Класс DataColumn

соответствует столбцу таблицы. В
действительности же DataColumn
содержит не данные, хранящиеся в
объекте DataTable, а информацию о
структуре столбца. Такая
разновидность информации называется
метаданными (metadata).
45

46. Класс Constraint

Класс DataTable содержит еще одно
свойство — Constraint — типа
ConstrsantsCollection. Оно позволяет
создавать объекты ForeignKeyConstraint
и ассоциировать различные столбцы с
определенными условиями, которым
должны соответствовать данные из
DataTable.
46

47. Класс DataRow

Объект DataTable предоставляет через набор
Rows содержимое всех записей данных.
Когда вы изменяете содержимое записи,
DataRow кэширует эти изменения, чтобы
позже передать их в БД.
При изменении значения поля записи объект
DataRow хранит оригинальное и текущее
значения поля, что обеспечивает успешное
обновление содержимого БД.
47

48. Класс DataRelation

позволяет задать отношения между
различными таблицами, с помощью которых
можно проверять соответствие данных из
различных таблиц, а также просматривать
родительские и дочерние строки из
различных объектов DataTable. Кроме того,
объекты DataRelation предоставляют
свойства, позволяющие обеспечить
ссылочную целостность.
48

49. Класс DataView

Выбрав результаты запроса в объект
DataTable, его содержимое можно
просматривать разными способами
посредством объекта DataView.
Просматривать содержимое одного
объекта DataTable можно
одновременно посредством нескольких
объектов DataView.
49

50. Классы DataSet со строгим контролем типов

— это класс, наследованный от класса
DataSet и включающий свойства и
методы, основанные на указанной вами
схеме данных.
Кроме того, этот класс содержит другие
классы для объектов DataTable и
DataRow, они позволяют создавать
более эффективный код доступа к
данным.
50

51.

КОНЕЦ
51
English     Русский Правила