Технология Microsoft ADO.NET

       

Применение свойства TableMappings для помещения в DataSet нескольких таблиц


Свойство TableMappings используется также для помещения нескольких таблиц из базы данных в один объект DataSet. Создайте новое приложение и назовите его SomeTable. Из окна Toolbox перетаскиваем на форму элемент управления TabControl, устанавливаем его свойству Dock значение Fill. В поле свойства TabPages нажимаем на кнопку

(...) (рис. 12.25, А). В редакторе TabPage Collection Editor нажимаем три раза на кнопку "Add" для создания элементов со следующими свойствами (рис. 12.25, Б):


увеличить изображение
Рис. 12.25.  Настройка элемента TabControl. А - запуска редактора, Б - настройка элементов

NameText
tpCustomersCustomers
tpEmployeesEmployees
tpOrdersOrders

Завершив работу, нажимаем "ОК" - на форме появляются три вкладки. Помещаем на каждую вкладку элемент управления DataGrid с установленным значением Fill свойства Dock. Называем их "dgCustomers", "dgEmployees", "dgOrders" в соответствии с названиями вкладок. Переходим в код формы и подключаем пространство имен для работы с базой данных:

using System.Data.SqlClient;

В классе формы создаем строки commandText и connectionString:

string commandText = "SELECT * FROM Customers; SELECT * FROM Employees; SELECT * FROM Orders;"; string connectionString = "workstation id=7EA2B2F6068D473;integrated security=SSPI;data sou" + "rce=\"(local)\";persist security info=False;initial catalog=NorthwindCS";

Обратите внимание на то, что в SQL-запросе commandText используется извлечение содержимого сразу трех таблиц. В конструкторе формы создаем объекты SqlConnection, SqlCommand и SqlDataAdapter:

SqlConnection conn = new SqlConnection(); conn.ConnectionString = connectionString; SqlCommand myCommand = new SqlCommand(); myCommand.Connection = conn; myCommand.CommandText = commandText; SqlDataAdapter dataAdapter = new SqlDataAdapter(); dataAdapter.SelectCommand = myCommand;

Вызывая метод Add свойства TableMapping, мы помещаем несколько таблиц в один объект DataAdapter:


dataAdapter.TableMappings.Add("Customers", "DataSetTableCustomers"); dataAdapter.TableMappings.Add("Employees", "DataSetTableEmployees"); dataAdapter.TableMappings.Add("Orders", "DataSetTableOrders");

В параметрах метода Add передаем название таблицы в базе данных, а затем название в объекте DataSet (рис. 12.26):


Рис. 12.26.  Параметры метода Add

Создаем объект DataSet, заполняем его данными, определяем источник данных для элементов DataGrid:

DataSet ds = new DataSet(); dataAdapter.Fill(ds); dgCustomers.DataSource = ds.Tables[0].DefaultView; dgEmployees.DataSource = ds.Tables[1].DefaultView; dgOrders.DataSource = ds.Tables[2].DefaultView;

Свойство Tables принимает либо порядковый номер объекта DataTable в DataSet, либо его название (Name) (рис. 12.27):


Рис. 12.27.  Свойство Tables

Здесь мы применили обращение по номеру. Запускаем приложение. Перемещаясь по вкладкам, можно видеть таблицы Customers, Employees и Orders (рис. 12.28):


Рис. 12.28.  Готовое приложение SomeTable

В программном обеспечении к курсу вы найдете приложение SomeTable (Code\Glava6 SomeTable).


Содержание раздела