Презентация "Технология ADO.NET"
Подписи к слайдам:
- традиционные Windows-приложения (на основе Windows-форм), которые реализованы в виде exe-файлов, запускаемых на компьютере пользователя;
- Web-приложения (на основе Web-форм), которые работают в оболочке браузера. Для хранения данных на уровне обоих типов приложений используется объект DataSet.
Пространствам имен |
Описание |
System.Data |
Пространство имен включает в себя общие структуры данных, не зависящие от конкретного поставщика. В него входит класс DataSet и целое семейство связанных с ним классов (DataTable, DataColumn, DataRow, DataRelation, Constraint и т.п.). |
Поставщики данных |
|
System.Data.SqlClient |
Управляемый поставщик SQLServer |
System.Data.OleDb |
Управляемый поставщик OLEDB |
System.Data.Odbc |
Управляемый поставщик ODBC |
Объект |
Описание |
SQLConnection |
Объект, позволяющий создать соединение с базами данных MSSQLServer |
OleDbConnection |
Объект, позволяющий создать соединение с любым источником данных (простые текстовые файлы, электронные таблицы, базы данных) через OLEDB |
OdbcConnection |
объект, позволяющий создать соединение с ODBC-источниками данных. |
- объявление объекта соединения;
- создание объекта соединения;
- определение строки соединения;
- использование соединения, например, для создания команды;
- открытие соединения;
- выполнение команды;
- закрытие соединения.
Объявление объекта соединения
Создание соединения (Операторы создания объектов соединения помещаются в блок инициализации) Строка соединения Первое свойство объекта соединения, которое необходимо определить в блоке инициализации для установления связи с базой данных – это строка соединения ConnectionString. В строке соединения управляемых поставщиков необходимо, как минимум, указать:- местоположение базы данных
- требуемую аутентификационную информацию. Помимо этого, каждый поставщик данных определяет дополнительные параметры соединения. Если в строке соединения не указаны значения всех возможных параметров, они считаются установленными по умолчанию.
Параметров |
Описание |
DataSource |
Имя сервера баз данных |
InitialCatalog |
База данных, находящаяся на сервере |
UserID |
Идентификатор пользователя, который должен применяться для аутентификации пользователя на сервере баз данных |
PWD |
Пароль, который должен применяться для аутентификации пользователя на сервере баз данных |
IntegratedSecurity |
Авторизация Windows, если этот параметр содержит True, в противном случае ввод имени и пароля |
Провайдер |
Описание |
SQLOLEDB.1 |
Для SQL Server |
Microsoft.Jet.OLEDB.4.0 |
Для Microsoft Access |
PostgreSQL |
Для базы данных PostgreSQL |
- Создание строки соединения на основе имени источника данных (DataSourceNameDSN);
- Использование динамических строк соединения. Использование DSN заключается в том, что каждый компьютер должен либо быть специально настроенным, либо иметь доступ к DSN-файлам. Использование DSN позволяет сохранить определенный контроль над строками соединения. Так, если меняется местоположение сервера или аутентификационная информация, разработчику придется изменить всего лишь атрибуты DSN, а не программный код. Атрибуты DSN можно использовать также для динамического генерирования информации о соединении. В этом случае параметры строки соединения, такие как DRIVER и SERVER, можно указать непосредственно в строке соединения, а не прятать их в атрибуте DSN.
Обработка ошибок в .NET
Для перехвата исключений и их обработки в среде .NET предусмотрена структура try-catch-finally:
При возникновении ошибки платформа .NET генерирует исключение.
Смысл обработки исключений заключается в том, что при неудачной попытке что-то выполнить процесс генерирует объект исключения, который может быть перехвачен вызывающим кодом.
Открытие и закрытие соединения
Объекты Connection имеют два базовых метода для открытия и закрытия соединения (Open и Close)
§2 Работа с объектом DataCommand Команда данных Для выполнения основных задач, связанных с взаимодействием с базами данных, можно использовать объекты команд. Команда данных содержит ссылку на SQL-запрос или хранимую процедуру, которые собственно и реализуют конкретные действия. Команда данных – это экземпляр класса: System.Data.Odbc.OdbcCommand или System.Data.OleDb.OleDbCommand или System.Data.SqlClient.SqlCommand. Действия объекта DataCommand С использованием объекта DataCommand в приложении можно выполнять следующие действия:- Исполнять команды SELECT, которые возвращают набор записей. Причем результат выборки можно обрабатывать непосредственно, без его загрузки в набор данных DataSet.
- Выполнять команды, обеспечивающие создание, редактирование, удаление объектов базы данных (например, таблиц, хранимых процедур и т.п.).
- Выполнять команды, обеспечивающие получение информации из баз данных в виде хранимых процедур.
- Выполнять динамические SQL-команды, позволяющие модифицировать, вставлять или удалять записи непосредственно в базе данных, вместо того, чтобы редактировать таблицы набора данных DataSet, а затем копировать эти изменения в базу данных.
- Выполнять команды, которые возвращают скалярное, то есть единственное значение.
- Выполнять команды, которые возвращают данные из базы данных SQL Server в формате XML. (Эта возможность используется в Интернет-приложениях.) Например, когда нужно выполнить запрос и получить данные в формате XML, чтобы преобразовать данные к HTML-формату и затем отправить их браузеру.
Использование метода ExecuteNonQuery()
Использование метода ExecuteScalar()
Пример вызова хранимой процедуры “MarkaNeisp” Если в приложении используется объект DataCommand, который работает непосредственно с элементами базы данных, то выполняемые SQL-запросы и хранимые процедуры обычно требуют параметров. Перед выполнением таких запросов необходимо определить значения параметров. Объект DataCommand поддерживает коллекцию Parameters. Прежде чем выполнить команду, необходимо установить значение для каждого параметра команды. §3 Отсоединенный набор данных DataSet Объект DataSet Объект DataSet – это:- набор информации, извлеченной из базы данных; доступ к этому набору осуществляется в отсоединенном режиме;
- база данных, расположенная в памяти;
- сложная реляционная структура данных со встроенной поддержкой XML-сериализации. Роль объекта DataSet в ADO.NET заключается в предоставлении отсоединенного хранилища информации, извлеченной из базы данных, и в обеспечении для .NET возможностей базы данных, хранимой в памяти. Объект DataSet – это коллекция структур данных, использующихся для организации отсоединенного хранилища информации. Так как объект DataSet не связан с базой данных, его можно воспринимать как реляционное хранилище данных.
- DataTable - набор данных, организованный в столбцы и строки;
- DataRow– коллекция данных, которая представляет собой одну строку таблицы DataTable, объект DataRow является фактическим хранилищем данных;
- DataColumn – коллекция правил, описывающая данные, которые можно хранить в объектах DataRow;
- Constraint – данный объект используется для определения бизнес – правил объекта DataTable и задает допустимость хранения определенных данных в объекте DataTable;
- DataRelation –описание связей между объектами DataTable.
Пример выборки данных из объекта DataSet по номеру строки в текстовые поля:
Добавление строки Для создания новой строки можно использовать соответствующие методы (NewRow() и Add() ) объекта DataTable. Следует отметить, что метод NewRow() сам по себе не добавляет строку в объект DataTable. Для этого необходимо вызвать метод Add(), передав ему в качестве параметра объект строки.Пример добавления строки в объект DataSet:
Удаление строки При использовании отсоединенных данных к удалению строки из коллекции предъявляется особое требование: строка должна продолжать существовать до тех пор, пока хранилище данных не будет обновлено с помощью объекта DataSet. Удаление строки может быть осуществлено, например, с помощью метода Delete() объекта DataRow. В этом случае строка удаляет себя сама.Пример удаления строки :
Изменение строки Индексаторы класса DataRow позволяют установить новые значения столбцов строки, например: Однако при определении нового значения столбца объект DataRow сгенерирует исключение в том случае, если это значение будет конфликтовать со свойством DataType объекта DataColumn. Существуют ситуации, в которых изменения в конкретную строку DataRow необходимо вносить параллельно. Обычно это делается тогда, когда одно изменение приводит к нарушению некоторого ограничения или когда необходимо иметь возможность отмены изменений перед их внесением в базу данных. В этом случае используются методы BeginEdit(), EndEdit() и CancelEdit() класса DataRow. Изменение строки Как только будет вызван метод BeginEdit(), изменения перестанут отражаться на объекте DataRow до тех пор, пока не будет вызван метод EndEdit(). Если внесенные изменения окажутся ошибочными, можно вызвать метод CancelEdit(), который вернет строку в первоначальное состояние (состояние, в котором она находилась до вызова метода BeginEdit()).Пример изменения строки:
§4 Объект DataAdapter Объект DataAdapter DataAdapter– один из важнейших объектов ADO.NET. Этот объект является посредником между источником данных и набором данных DataSet. В приложениях DataAdapter обеспечивает считывание информации из базы данных и пересылку ее в DataSet, возврат изменений, сделанных пользователем, в исходную базу данных. Задача модификации данных решается через использование команд на основе SQL-запросов и хранимых процедур.Схема функционирования объекта DataAdapter
Схема функционирования
DataAdapter
Схема функционирования
DataAdapter
Типы адаптеров В ADO.NET имеется несколько типов адаптеров данных:
Адаптер данных |
Описание |
System.Data.Odbc.OdbcDataAdapter |
используется для работы с ODBC – источниками данных |
System.Data.OleDb.OleDbDataAdapter |
используется для работы с любым источником данных, доступным через OLEDB – провайдера |
System.Data.SqlClient.SqlDataAdapter |
используется для работы с данными, хранящимися в SQL Server |
- SelectCommand,
- InsertCommand,
- UpdateCommand
- DeleteCommand.
- Создать экземпляр класса DataAdapter, который является специализированным классом, выполняющим функцию контейнера для команд, осуществляющих чтение и запись информации в базу данных;
- Создать экземпляр класса DataSet; только что созданный объект DataSet является пустым;
- Вызвать метод Fill() объекта DataAdapter для заполнения объекта DataSet данными из запроса, определенного в объекте Command.
Пример заполнения набора данных Sto
§5 Объект CommandBuilder Класс CommandBuilder Класс CommandBuilder отвечает за генерацию запросов по мере возникновения необходимости в них в объекте DataAdapter. Каждый управляемый поставщик содержит собственную реализацию класса CommandBuilder (SqlCommandBuilder, OleDbCommandBuilder, OdbcCommandBuilder). После создания объекта CommandBuilder его необходимо передать в конструктор объекта DataAdapter. Как только объект CommandBuilder узнает об объекте DataAdapter, он использует свойство DataAdapter. SelectCommand, чтобы получить информацию о столбцах объекта DataTable и иметь возможность создать команды вставки, обновления и удаления данных. Функционирование объекта CommandBuilder Для того, чтобы гарантировать нормальное функционирование объекта CommandBuilder, необходимо учесть несколько моментов. Свойство DataAdapter.SelectCommand должно содержать действительную команду, которая использовалась для заполнения обновляемого объекта DataTable. Объект CommandBuilder применяет SQL- оператор SELECT для того, чтобы иметь возможность создавать операторы вставки, обновления и удаления данных. Таблица DataTable, которая будет обновляться, должна либо содержать столбец уникальных значений, либо для нее должен быть определен первичный ключ.Пример использования объекта CommandBuilder:
§6 Доступ к данным в Windows-формах Привязка данных в ADO.NET Windows-формы поддерживают два типа привязки данных.- Для элементов управления, содержащих единственное значение (таких, как TextBox, CheckBox и т.п.), Windows–формы поддерживают простую привязку данных,
- Для элементов управления, содержащих несколько значений (таких, как ListBox, ComboBox, DataGrid и т.п.) – сложную привязку данных. Далее рассмотрим некоторые из них.
Методы объектаComboBox |
Описание |
DataSource |
экземпляр класса, реализующего интерфейс List (например, класс DataTable) |
DisplayMember |
свойство объекта – источника (DataSource), которое будет отображаться в элементе управления |
ValueMember |
идентификатор, хранящийся в элементе управления и определяющий строку объекта – источника, к которой происходит обращение |
Примеры привязки данных к списку и раскрывающемуся списку соответственно:
Особенности привязки данных к элементу управления DataGrid Особенность привязки данных к элементу управления DataGrid заключается в том, что разработчик имеет дело с более обширным множеством данных. Элемент управления DataGrid позволяет установить значение свойства DataSource равным фактическому источнику данных (такому, как объект DataTable, DataSet, DataView и т.п.). Если изменить значение свойства DataSource на этапе выполнения, оно вступит в силу только после перезагрузки элемента управления DataGrid, осуществляемой с помощью метода DataDrid.SetDataBinding(). В качестве параметров метод SetDataBinding() принимает новые значения свойств DataSource и DataMember. Значение свойства DataMember – это именованная сущность, с которой будет связан элемент управления DataGrid. §7 Пример создания Windows-приложения Постановка задачи Пусть требуется создать программную систему, предназначенную для диспетчера станции техобслуживания. Такая система должна обеспечить хранение данных об:- услугах, оказываемых станцией и их стоимости;
- клиентах станции, сдающих свои автомобили на ремонт;
- автомобилях клиентов;
- работниках станции. Также в программной системе должны быть реализованы следующие функции:
- поиск,
- фильтрация данных,
- добавление таблицы из приложения,
- экспорт данных в XML, XLS.
Внешний вид Windows-приложения может быть таким:
Программный код подключения к БД STO:
Программный код заполнения DataSet базы данных STO
Продолжение
Программный код вывода соответствующей таблицы из DataSet базы данных STO
Программный код внесения измененных данных из DataSet STO на сервер БД (см. рисунок, пункт 1):
Программный код вывода содержимого всей таблице после фильтрации (см. рисунок, пункт 2):
Программный код экспорта содержимого таблицы в XML (см. рисунок, пункт 3):
Экспорт содержимого таблицы Работник в XML (см. рисунок, пункт 3): МПрограммный код экспорта содержимого таблицы в XSD (см. рисунок, пункт 4):
Программный код экспорта содержимого таблицы в XLS (см. рисунок, пункт 5): Экспорт содержимого таблицы Автомобиль в XSD (см. рисунок, пункт 4):Экспорт содержимого таблицы Работник в XLS (см. рисунок, пункт 5):
Перечень полученных отчетовПрограммный код запуска хранимой процедуры “MarkaNeisp” с параметром “Mar”, которая выводит неисправности указанной марки автомобиля:
Текст хранимой процедуры MarkaNeisp Реализация хранимой процедуры MarkaNeisp Примеры фильтровИнформатика - еще материалы к урокам:
- Презентация "Основные понятия и определения"
- Презентация "Основные определения реляционной модели данных"
- Презентация "CLUSTER ANALYSIS"
- Презентация "Объектно-ориентированные базы данных"
- Презентация "Призначення особливості та можливості СУБД Ms Access"
- Презентация "Основные понятия баз данных и СУБД. Модели данных"