Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Троелсен Э. Язык программирования С# 2010 и п...docx
Скачиваний:
113
Добавлен:
21.09.2019
Размер:
6.92 Mб
Скачать

Работа с адаптерами данных

Теперь, когда вы знаете возможности использования типов DataSet ADO.NET, обратим внимание на адаптеры данных. Напомним, что объекты адаптера данных используются для "наполнения" DataSet объектами DataTable и возврата измененных объектов DataTable базе данных для обработки. Описания основных членов базового класса DbDataAdapter приведены в табл. 22.15.

Таблица 22.15. Основные члены класса DbDataAdapter 

Члены

Описание

SelectCommand InsertCommand UpdateCommand DeleteCommand

Задают SQL-команды, которые будут отправлены хранилищу данных при вызове метода Fill() или Update()

Fill()

Заполняет данную таблицу в DataSet некоторым набором записей, зависящим от заданного объектом команды значения SelectCommand

Update()

Обновляет DataTable, используя объекты команд из свойств InsertCommand, UpdateCommand или DeleteCommand. Точная команда, которая при этом выполняется, зависит от значения RowState для данного DataRow в данном объекте DataTable (данного DataSet)

В следующих примерах не забывайте о том, что объекты адаптера данных управляют соответствующим соединением с базой данных за вас, так что вам не придется явно открывать или закрывать сеанс связи с СУБД. Тем не менее, вам все равно нужно предоставить адаптеру данных действительный объект соединения или, в виде аргумента конструктора, строку соединения (которая будет использоваться для построения внутреннего объекта соединения).

Заполнение DataSet с помощью адаптера данных

Создайте новое консольное приложение с именем FillDataSetWithSqlDataAdapter, указав в нем использование пространств имен System.Data и System. Data.SqlClient. Обновите метод Main() так, как предлагается нише (для простоты здесь не показан блок try/catch).

static void Main(string[] args) {

 Console.WriteLine("***** Забавы с адаптерами данных ***** \n");

 string cnStr = "uid=sa;pwd=;Initial Catalog=Cars;Data Source=(local)";

 // Заполнение DataSet новыми DataTable.

 DataSet myDS = new DataSet("Cars");

 SqlDataAdapter dAdapt new SqlDataAdapter("Select * From Inventory".cnStr);

 dAdapt.Fill(myDS, "Inventory");

 // Отображение содержимого.

 PrintDataSet(myDS);

}

Обратите внимание на то, что адаптер данных создается с указанием SQL-оператора Select. Это значение будет использоваться для внутреннего построения объекта команды, которую затем можно будет получить, выбрав свойство SelectCommand. Далее, заметьте, что метод Fill() получает экземпляр типа DataSet и необязательное строковое имя, которое будет использоваться при установке свойства TableName нового объекта DataTablе (если вы не укажете имя таблицы, адаптер данных использует для таблицы имя Table).

Замечание. Метод Fill() возвращает целое число, соответствующее числу строк, затронутых SQL-запросом.

Как и следует ожидать, при передаче DataSet методу PrintDataSet() (реализованному в этой главе ранее) будет получен список всех строк таблицы Inventory базы данных Cars (рис. 22.18).