Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 278

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 272 273 274 275 276 277 < 278 > 279 280 281 282 283 284 .. 320 >> Следующая

private void bt/iiptiateData_ClicJUobjec; sender. System.EventArgs e)
try
}
DataGridl.Refresh!): dAdapt.UpdatetmyDS. "Inventiry")
eatenfLKcapiion ex)
}
MessageBox.Show(ex.ToStr1ng()};
Как обычно, мы вызвали метод Update!) и указали объект DataSet и таблицу в нем, в которую следует записать изменения. Наше приложение будет выглядеть примерно так, как представлено на рис. 13.30 (перед нажатием на кнопку убедимся, что мы вышли из режима редактирования!).
; JjWiihIdvm Data Adapter Client
CailO [Mike Colot |PelName
_ _ D BMW Red Chucky 1 QaII Pmk Mcortlnit 2 Saab Red Zip» 3 BMW і,:--,-. Buddha 4_Colt Rust _Rusty
Pirk (mil
HH Ё BMW Green Ми:- V
*
Submit Changas
Рис. 13.30. Наше приложение, использующее SqICommandBuilder
Я думаю, вы согласитесь со мной, что применение автоматически генерируемых команд SQL гораздо проще, чем создание таких команд вручную. Однако, конечно же, все имеет свои недостатки. К примеру, если объект DaUTab'ie создан на основе объединения двух таблиц в источнике данных, использовать эту технологию нам не удастся. Кроме того, создание команд вручную предоставляет в наше распоряжение гораздо больше возможностей в различных специфических ситуациях.
Код приложения можно найти в подкаталоге Chapter 13.
Заполнение объекта DataSet и добавление объектов DataRelations 687
Заполнение объекта DataSet с несколькими таблицами и добавление объектов DataRelations
Мы завершим эту главу тем, что создадим приложение, очень похожее на гч;, что было создано в самом начале этой главы. Его интерфейс нам уже знаком (рис. 13.31): на форме три элемента управления DataGrid, в качестве источников данных для которых служат записи, полученные из таблиц Inventory, Orders и Customers базы данных Cars. Единственная кнопка формы предназначена для передачи измененных данных из DataGrid обратно в базу данных.
"\ Multi-Table DataSet

CarID I Make J Coloi I PetName
1 Goll Rnk MoonUni! _J
ш 3 BMW Pea Green Buddha
¦г H CnII RikI
Fust Name \LastName |CutllD
Amy Kandi Kevin .lnp
OrdeilD
Smith Nash Nash Smith
I Cail D
; CustID
0 *
5
Lh r I
Update
Рис. 13.31. Информация из многотабличного объекта DataSet выведена на форму
Чтобы сделать все максимально простым, мы будем использовать для каждого из трех объектов SqIDataAdapter (по одному на каждую таблицу) автоматически генерируемые команды SQL. Прежде всего подготовим все объекты, которые понадобятся нам при использовании нашей формы:
class - !,г : System. 1-і і ncluws. Poms. Готті
{
private System.Windows.Forms.DataGrid custGrid: private System,Windows.Forms.DataGrid inventoryGrid: private System.Windows.Forms.Button btnUpdate; private System.Windows,Forms.DataGrid OrdersGrid: private System.ComponentModel .Container components;
// Соединение с базой данных
688 Глава 13 • Доступ к данным при помощи ADO.NET
private SqlConection cn = new
SqI Connect!on("server=(Local):uid=sa;pwd=:database=Cars").
Объекты DataAdapter :.- каждой таблицы) private SqIDataAdapter invTableAdapter; private SqIDataAdapter custTableAdapter: private SqIDataAdapter ordersTableAdapter:
II Объекты CommandBui 1 der (для каждой таблицы) private Sq1CommandBui1 der invBuilder = new SqlCommandBuilder; private SqlCommandBuilder orderBuilder = new SqlCommandBuilder; private SqlCommandBuilder cust^uilder = new SqlCommandBuilder;
// Сам объект DataSet
DataSet carsDS new OataSetC);
Вся работа по созданию переменных для работы с данными и заполнению объекта DataSet производится в конструкторе формы. В нем также будет производиться вызов к вспомогательной функции Bui IdTableRelationShlр(). Код для конструктора будет выглядеть так:
public in,, HiF о ти)
{
InitializeComponentC):
II Соэдаек объекты DataAdapter
InvTableAdapter - new Sq 1 Dat a Ada pt e г {" S EL ЕСТ * from Inventory", cn); custTableAdapter = new SqIDataAdapterC"SELECT * from Customers", cn); ordersTableAdapter = new SqIDataAdapter("SELECT * from Orders", cn);
II Применяем автоматическую генерацию команд SQL invBuilder= new SqlCommandBuilder(invTableAdapter); orderBuilder = new SqlCommandBui)der(ordersTableAdapter); custBuilder = new Sq1CommandBuildericustTableAdapter);
Ii Заполняем таблицы в DataSet invTableAdapter. Fi 11(carsDS, "Inventory"); custTableAdapter.Fi 11(carsDS. "Customers"): orderTableAdapter.Fi 11(carsDS. "Orders");
// Соэдген отношения между таблицами BuildTableRelationshipO:
i
Вспомогательная функция Bui 1 dTabl eRel ationship() делает именно то, о чем вы, наверное, уже догадались по ее названию — создает отношения между таблицами. Код для нее будет выглядеть в полном соответствии с тем, с чем мы уже сталкивались в этой главе:
private void S,iildTableSela:ior.shiiin
і!
II Соэдаеи объект DataRelation
DataRelation dr = new Data4elation("CustomerOrder".
carsDS.Tables["Customers"]. Columns["CustID"]. carsDS.Tab!es["Orders"].CoIumns["CustlD"]):
Предыдущая << 1 .. 272 273 274 275 276 277 < 278 > 279 280 281 282 283 284 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100