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

 

Реклама
bulletinsite.net -> Книги на сайте -> Вебмастеру -> Сеппа Д. -> "Microsoft ADO.NET" -> 98

Microsoft ADO.NET - Сеппа Д.

Сеппа Д. Microsoft ADO.NET — М.: Русская Редакция, 2003. — 640 c.
ISBN 5-7502-0223-2
Скачать (прямая ссылка): mcrsftado2003.pdf
Предыдущая << 1 .. 92 93 94 95 96 97 < 98 > 99 100 101 102 103 104 .. 260 >> Следующая

Редактирование существующей записи
Есть три способа программно изменить содержимое записи. Начнем с самого простого.
При работе с объектом DataRow значение поля можно задать, используя свойство Ла:а этого объекта. Ранее в этой главе я уже говорил, как посредством данного свойства поля. Свойство доступно для чтения и записи, а значит, годится и для изменения значения поля. Следующий фрагмент кода с помощью метода Find набора Rows ищет запись в объекте DataTable Customers и затем изменяет значения полей С'чи/тпуУа/т и OwSeetNanie Подробнее о методе Find — в главе 8. Сейчас же будем считать данный пример своеобразным анонсом.
Visual Basic .NET
Dim rowCustomer As DataRow
rowCustomer = ds.Tables("Customers").Ro^s Find("ANTON")
If rowCustomer Is Nothing Then 'Запись о клиенте не найдена!
Else
fowCustonter("CompanyName") = "NewCompanyName" rowCustomerC'ContactName") = "NewContactName"' End If
Visual C# .NET
DataRow rowCustomer;
rowCustomer = ds.Tables!"Customers"]. Rows. Find( "ANTON"); if (rowCustomer == null)
//Запись о клиенте не найдена! else {
rowCustome г["CompanyName"] = "MewCompanyName", rowCus tomer[ "ContactNaitio" ] = "He*Contac:tName" ;
Второй способ обновления записи аналогичен первому за исключением что добавляются вызовы методов BeginEdit и ЕпШШ объекта DataRow.
ГЛАВА б Работа с объектами DataSet 203
Visual Basic NET
Dim rowCustomer As DataRow
rowCustomer = ds.TablesC "Customers").Hows.Find("ANTON")
If rowCustomer Is Nothing Them ' Запасе о клиенте не найдена!
Else
rowCustomer.BeginEdit
rowCustomer("CompanyNama") = "NewCompanyName" irowCustomerC'ContactName") = "NewContactName" rowCustomer.EndEdit
End If
Visual C# .NET
DataRow rowCustomer;
rowCustomer = ds.Tables["Customers"].Rows.Find("ANTON");
if (rowCustomer == null)
//Запись о клиенте не найдена! else {
rowCustomer. BeginEditO;
rowCustomer["CompanyName"] = "NewCompanyName";
=
rowCustomer, EndEdit();
\
Методы ?cgb-Hduи i-.iuihdu iиi.sm«линч ."i\;iK|iii ;¦ .n.iii. изменения записи. При вызове EndEdit коррективы '.аписи • • i ¦ i Если вы решите отменить их, вызовите метод i'.rma¦li-dtt. и запись нернеген в состояние на момент вм.ч<>вм Bvyhi-Edit.
Есть еще одно отличие между двумя этими способами дсдйктизойгпчпя записи. Объект DataTable предоставляет события RouCbanging. Ruit Changed.. Column-Changing и с помощью которых удается просматривать изменения записи или поля. Порядок наступления этих событий зависит от того, как вы изменяете запись — с вызовом методом Begi'alldi: и EndEdit или без него.
В первом примере содержимое записи менялось каждый раз при изменении содержимого одного из полей. События объекта DataTable наступают всегда, когда вы изменяете содержимое поля. Если вызван метод BeginEdit, наступление событий откладывается до вызова EndEdit (если вы вызовете Ctmcdfd/i. буфер:; ю-ванные изменения отбрасываются, и поскольку запись не обновится, никакие события не наступают).
Третий способ - воспользоваться свойством ItemArray, Как и свойство Item, ItemArray позволяет просматривать и редактировать содержимое записи. Отличие их в том, что t-v;;, рассчитано на одновременную работу с одним полем, a ItemArray принимает и возвращает элементы которого соответствуют полям.
Visual Basic .NET
Dim aCustomer As Objecto = {"ALFKI", "NewCompanyName", _
"NewContactName", "NewPhoneNo"}
204
Часть III Автономная работа с данными: объект DataSet модели ADO.NET
Dim rowCustomer As DataRow
rowCustomer = ds.Tables{ "Customers"). Rows. Find< "ALFKI") irowCustomer. ItemArray = aCustonier
Visual C# NET
cbjectf] aCustomer = {"ALFKI", "HewCoppanyNaise-,
"NewContactName", "NewPhoneNo");
DataRow rowCustomer;
rowCustomer = ds.Tablest"Customers"].Rows. Find("ALFKI"); ¦rowCustomer. ItemArray = aCustomer;
Если вы хотите с помощью свойства 'к-т-\п,і\ отредактировать содержимое лишь отдельных полей записи, воспользуйтесь ключевым словом Nothing (Visual Basic) или null (Visual С* .NET). Следующий фрагмент кода пропускает перное поле записи и изменяет содержимое второго, третьего и четвертого полей.
Visual Basic .NET
Dim aCustomer As Object() = {Nothing, "NewCompanyName", _
"NewContactName", "NewPhoneNo"}
Dim rowCustomer As DataRow
rowCustomer = rSs.Tables( "Customers"У Mows. Find? "ALFKI") rowCustomer.ItemArray = aCustomer
Visual C# NET
object[] aCustomer : (null, "NewCompanyName",
"NewContactName", "NewPhoneNo"};
DataRow rowCustomer;
rowCustomer = ds. Tabi es[ "Cust oms r s" ]. Hows. F> nd ("ALFKI ) irowCustomer. ItemArray = aCustomer;
Примечание При изменении содержимого объекта DataRow содержимое соответствующей записи БД не редактируется автоматически. Изменения содержимого объекта DataRow считаются < инжш п»ш! г их можно позже передать в БД посредством объекта Па1аА0ар1ег. Подробнее об этом -в главах 10 и 11
Так каким же способом изменять записи объекта D&,*aPzbM-. Я предпочитаю вызвать 1ч".!.т1-<Ш и i'nittiiiii. поскольку при этом приходится писать четко структурированный, удобочитаемый и простой в обслуживании код. Кроме того, в случае неожиданных проблем такой подход позволяет отменить сразу группу изменений записи.
Предыдущая << 1 .. 92 93 94 95 96 97 < 98 > 99 100 101 102 103 104 .. 260 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100