1 / 28

ADO.NET

ADO.NET. Интегрированная среда разработки. ADO.NET. Общая картина

phyre
Download Presentation

ADO.NET

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ADO.NET Интегрированная среда разработки

  2. ADO.NET • Общая картина • Все типы ADO.NET предназначены для выполнения одного набора задач: установить соединение с базой данных, создать и заполнить данными объект DataSet, отключиться от хранилища данных, вернуть изменения внесенные в DataSet обратно в базу. • DataSet представляет собой локальную копию взаимосвязанных таблиц. • После создания DataSet и его заполнения данными мы можем программными средствами производить запросы к нему и передвигаться по таблицам. • Мы можем добавлять, удалять и изменять данные, накладывать фильтры и тд.

  3. База данных на сервере DataSet1 DataSet2 Прикладная программа 1 Прикладная программа 2

  4. DataSet • Модель объектов ADO.NET очень обширна, но в ее основе лежит довольно простой набор классов. Наиболее важным из них считается DataSet. • DataSet представляет собой отображение используемой базы данных, перенесенное на машину пользователя. При этом нет необходимости постоянно подключаться к серверу базы данных для модификации данных. • Лишь иногда вы соединяете DataSet с его родительской базой данных и модифицируете ее внесенными вами изменениями. В то же время вы модифицируете DataSet теми изменениями в базе данных, которые сделали другие процессы.

  5. DataSet • DataSet состоит из объектов типа DataTable и объектов DataRelation. • К ним можно обращаться как к свойствам объекта DataSet. Свойство Tables возвращает объект типа DataTableCollection, который содержит все объекты DataTable используемой базы.

  6. Структура DataSet

  7. Объекты DataTableи DataColumnТаблицы и поля • Объект типа DataTable представляет собой таблицу базы данных. Такой объект может быть создан программно или путем запроса к базе данных. • Объект DataTable состоит из строк и столбцов. Строки представляют собой отдельные записи таблицы, столбцы — соответствующие поля. Для получения совокупности столбцов объект DataSet имеет свойство Columns, возвращающее DataColumnCollection, которое в свою очередь состоит из объектов типа DataColumn. • Каждый объект DataColumn представляет собой отдельный столбец таблицы, из которого можно получить любую запись.

  8. ОбъектDataRelationСвязи между таблицами • Кроме набора таблиц DataSetимеет свойство Relations, которое возвращает объект типа DataRelation Collection, состоящий из объектов DataRelation. Каждый DataRelationобъект хранит данные о связях между двумя таблицами посредством объектов DataColumn. Такое отношение называется на языке баз данных один ко многим (one-to-many).

  9. Объект DataRowСтроки • Свойство Rows объекта DataTable возвращает совокупность всех строк таблицы — DataRowCollection. Это свойство следует применять для того, чтобы пользоваться результатами запросов к базе данных. • Вы можете обращаться к записям таблицы как к элементам простого массива. Это значительно упрощает процесс доступа к элементам базы. Мы рассмотрим это более подробно далее на примере.

  10. DataAdapter • DataSet —это образ реляционной базы данных. ADO.NET использует объект типа DataAdapter как мост между DataSet и источником данных, который является основной базой данных. • DataAdapter содержит метод Fill() для обновления данных из базы и заполнения DataSet.

  11. DataAdapter База данных (Источник данных) DataAdapter DataSet Fill() Fill() Прикладная программа

  12. DBCommand и DBConnection • Объект DBConnection представляет собой средство для соединения DataSet с источником данных. Соединение может быть доступно при помощи различных командных объектов. • Например, объект DBCommand позволяет послать команду (обычно это SQL запрос или сохраненная процедура) к базе данных. Часто командные объекты создаются неявно, во время формирования объекта DataSet. • ADO.NET позволяет вам явно обращаться к таким объектам

  13. Провайдеры данных .NET • В ADO.NET используются так называемые провайдеры данных (Data Providers) .NET. Они обеспечивают доступ к соответствующим источникам данных и содержат четыре ключевых объекта: • Connection, Command, DataReaderи DataAdapter. • Например, провайдер: • SQL Server .NET Data Provider.

  14. Структура пространств имен • Типы (классы, структуры, перечислимые и т.д.), связанные с каждым из провайдеров данных .NET, находятся в собственных пространствах имен: • • System.Data.SqlClient. Содержит типы SQL Server .NET Data Provider, Руководство по архитектуре доступа к данным на платформе .NET • • System.Data.OleDb. Содержит типы OLE DB .NET Data Provider. • • System.Data.Оdbc. Содержит типы ODBC .NET Data Provider. • • System.Data. Содержит типы, независимые от провайдеров, например DataSetи DataTable.

  15. Структура пространств имен • Для каждого из провайдеров в его пространстве имен содержатся реализации объектов Connection, Command, DataReader и DataAdapter. • Имена реализаций объектов из пространства имен SqlClient начинаются с префикса "Sql", а имена реализаций из пространства имен OleDb — с префикса «OleDb». • Реализация объекта Connection из пространства имен SqlClient называется SqlConnection, тогда как ее эквивалент из OleDb — OleDbConnection. • Соответствующие реализации объекта DataAdapter называются SqlDataAdapter и OleDbDataAdapter.

  16. Использование объекта DataSet • Для обычного разработчика это означает, что класс DataSet предоставляет средства моделирования реляционных данных в памяти. И если ADO.NET в целом предпо- лагает работу с данными в отсоединенном режиме, объект DataSet позволяет «скрыть» этот факт и обращаться к информации так, как будто бы она находится в базе данных.

  17. Использование объекта Connection • using System; using System.Data; using System.Data.OleDb; // Создание объекта Connection. • OleDbConnection conn = new OleDbConnection("Provider=SQLOLEDB;" + "Server=vmkss-serv;" "Database=ADONET;" + "UID=someuser; ") ; // Установка соединения с базой данных. conn.Open() ;

  18. Использование объекта DataSet • // Создание объектов DataSet and Command. DataSet ds = new DataSet(); OleDbDataAdapter daAuthors = new OleDbDataAdapter("SELECT * FROM CUSTOMER",conn); // Заполнение объекта DataSet. daAuthors, Fill(ds); // Теперь мы можем закрыть соединение, conn.Close () ; // Извлечение таблицы из объекта DataSet. DataTable tbl = ds.Tables["Table"]; // Обработка всех строк таблицы, foreach (DataRow row in tbl.Rows) ( // Вывод на консоль значения всех полей заданной строки, foreach (Object val in row.ItemArray) { Console.Write{val.ToStringO); } Console.WriteLine(""); // Вывод пустой строки.

  19. Обновление БД с помощью объекта DataSet • Объект DataSet предоставляет возможность извлечения подмножества данных, которые были изменены, удалены или добавлены, что позволяет проверить их достоверность перед тем, как отразить изменения непосредственно в базе данных.

  20. Обновление БД с помощью объекта DataSet • Поскольку мы уже создали объектDataAdapter, нам остается связать с ним объект CommandBuilder и вызвать метод DataAdapter.Update () для обновления, добавления или удаления записей. • Соответствующие операции выполняются с помощью команд, заданных свойствами объекта DataAdapter InsertCommand, UpdateCommand и DeleteCommand .

  21. Первый шаг – создаем Connection • using System; using System.Data; using System.Data.OleDb; // Создание объекта Connection. OleDbConnection conn = new OleDbConnection("Provider=SQLOLEDB; " + "Server=vmkss-serv;" + "Database=ADONET;" + "UID=sa;"};

  22. Второй шаг – создаем DataSet • // Создание объектов DataSet и Command. DataSet ds = new DataSet (); OleDbDataAdapter daAuthors = new OleDbDataAdapter("SELECT * FROM CUSTOMER", conn);

  23. Третий шаг – создаем CommandBuilder • // Создание объекта OleDbCommandBuilder // оболочки объекта DataAdapter, поддерживающей // динамическое генерирование команд // обновления, добавления и удаления данных. OleDbCommandBuilder bldr = new OleDbCommandBuilder (daAuthors);

  24. Четвертый шаг - Adapter • // Заполнение объекта DataSet. daAuthors.Fill(ds); • // Извлечение таблицы из объекта DataSet. DataTable tbl = ds.Tables["Table"];

  25. Комментарий • Был создан экземпляр класса OleDbCommandBuilder. При создании объекта CommandBuilder конструктору передается объект DataAdapter. Объект CommandBuilder регистрирует себя в качестве "слушателя" объекта DataAdapter и, при необходимости, создает команды обновления, удаления или вставки данных.

  26. Завершение • Обратите внимание: после выполнения запроса к базе данных (в методе Fill) соединение было закрыто, затем мы заново открываем его непосредственно перед выполнением метода Update (). • conn. Open () ; daAuthors.Update(ds);

  27. Доступ к базе данных SQL Server с помощью поставщика OleDB • using System; using System.Data; using System.Data.OleDb; // Создание объекта Connection. OleDbConnection conn = new OleDbConnection("Provider=SQLOLEDB;" + "Server=localhost;" + "Database=ADONET;" + "UID=someuser;"); // Создание объектов DataSet и Command. DataSet ds = new DataSet(); OleDbDataAdapter daAuthors = new OleDbDataAdapter( "SELECT * FROM CUSTOMER", conn); // Заполнение объекта DataSet. daAuthors.Fill(ds);

  28. Доступ к базе данных SQL Server с помощью поставщика OleDB • // Извлечение таблицы из объекта DataSet. DataTable tbl « ds.Tables["Table"]; // Обработка всех строк таблицы. foreach( DataRow row in tbl.Rows) { // Вывод на консоль значений всех полей заданной строки. foreach {Object val in row.ItemArray} { Console.Write(val.ToString()); } Console.WriteLine(""); // Вывод пустой строки.

More Related