Члены | Описание |
---|---|
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
dAdapt.Fill(myDS, "Inventory");
// Отображение содержимого.
PrintDataSet(myDS);
}
Обратите внимание на то, что адаптер данных создается с указанием SQL-оператора Select. Это значение будет использоваться для внутреннего построения объекта команды, которую затем можно будет получить, выбрав свойство SelectCommand. Далее, заметьте, что метод Fill получает экземпляр типа DataSet и необязательное строковое имя, которое будет использоваться при установке свойства TableName нового объекта DataTablе (если вы не укажете имя таблицы, адаптер данных использует для таблицы имя Table).
Замечание. Метод Fill возвращает целое число, соответствующее числу строк, затронутых SQL-запросом.
Как и следует ожидать, при передаче DataSet методу PrintDataSet (реализованному в этой главе ранее) будет получен список всех строк таблицы Inventory базы данных Cars (рис. 22.18).
Отображение имен базы данных в понятные имена
Вы, скорее всего, знаете, что администраторы баз данных склонны создавать имена, таблиц и столбцов, которые нельзя назвать понятными для конечных пользователей. Но хорошей вестью является то, что объекты адаптера данных поддерживают внутреннюю строго типизованную коллекцию (DatаTableМаррing-Collection) типов System.Data.Common.DataTableMapping, доступную с помощью свойства TableMappings.
Рис. 22.18. Заполнение DataSet с помощью объекта адаптера данных
При желании вы можете использовать эту коллекцию для того, чтобы информировать DataTable о "дисплейных именах", которые должны использоваться при выводе содержимого. Предположим, например, что вы хотите отобразить имя Inventory, используемое для таблицы в рамках СУБД, в дисплейное имя Ассортимент. Кроме того, предположим, что вы хотите отобразить имя столбца CarID в виде Номер, а имя столбца PetName – в виде Название. Для этого в объект адаптера данных перед вызовом метода Fill добавьте следующий программный код (и не забудьте указать using для пространства имен System.Data.Common).
static void Main(string[] args) {
…
// Отображение имен столбцов БД в имена, понятные пользователю.
DataTableMapping custMap = dAdapt.TableMappings.Add("Inventory", "Ассортимент");
custMap.ColumnMappings.Add("CarID", "Номер");