Применение свойства TableMappings для помещения в DataSet нескольких таблиц
Свойство TableMappings используется также для помещения нескольких таблиц из базы данных в один объект DataSet. Создайте новое приложение и назовите его SomeTable. Из окна Toolbox перетаскиваем на форму элемент управления TabControl, устанавливаем его свойству Dock значение Fill. В поле свойства TabPages нажимаем на кнопку
(...) (рис. 12.25, А). В редакторе TabPage Collection Editor нажимаем три раза на кнопку "Add" для создания элементов со следующими свойствами (рис. 12.25, Б):увеличить изображение
Рис. 12.25. Настройка элемента TabControl. А - запуска редактора, Б - настройка элементов
tpCustomers | Customers |
tpEmployees | Employees |
tpOrders | Orders |
Завершив работу, нажимаем "ОК" - на форме появляются три вкладки. Помещаем на каждую вкладку элемент управления 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).