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

 

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

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

Сеппа Д. Microsoft ADO.NET — М.: Русская Редакция, 2003. — 640 c.
ISBN 5-7502-0223-2
Скачать (прямая ссылка): mcrsftado2003.pdf
Предыдущая << 1 .. 196 197 198 199 200 201 < 202 > 203 204 205 206 207 208 .. 260 >> Следующая

следует добавить ссылку на пространство имен
Visual Basic .NET
'До6йэьт« в начало модуля кода следующую строку Imports System.Xml
Dim As New DataSet() FillHyDataSet(ds)
Dim xmlDataDoc As New XmlDataDocument(ds) Dim nodOrder, oodDetail As XmlNode Dim strXPathQuery As String
strXPatriQuery = '7NewDataSet/0rders[0rderID=i02681" =
Console.Writetine("OrderID = " & nodOrder.ChildNodes(O).InnerText) Console.WritatineCCustomerlD = " & nodOrder.ChildNodes(O).InnerText) Console.WriteLine("OrderDate = " & nodOrder.ChildNodes(O).InnerText) Console.Writeline("Line Items:")
ГЛАВА 12 Рабм а с XML-данными
465
strXPattiQuery = -.с.г; : х0020 D(?tai2s[0rderID=10268J"
For Each nodDetail In xmlDataDoc. SelectNodes<strXPathduery) Console.WriteLineCvbTab & "ProductlD = " & _
rmdDe tai1.Ch ildNodes(1).In ne rText) Console,WriteLine(voTab & "Quantity = &
nod Detail.ChildNodes(2).InnerText) Console,WriteLlne(vt)Tab & "UnitPrice = " & _
nodDetail.ChildNodes{3).InnerText)
Console.Writetine() Next nodDetail
Visual C# NET
//Добавьте в начало модуля кода следующую строку using System.Xml;
DataSet ds = new DataSetQ; FillMyDataSet(ds);
XmlDataDocument xmlDataDoc = new XmlDataDocument(ds); XmlNode nodOrder; string strXPathQuery; =
inodOrder = xmlDataDoc.SelectSingleNode(strXPathQuery);
Console.WritBllne("OrderlD " + nodOrder. ChildNodes[0], InnerText);
Console. WriteLineCCustomerTD = " +
nodOrder.CbildNodes[1].InnerText); Console. WriteLine( "OrjJerOete = + nodOrder. ChildNodesf.2]. InnerText), Console.WriteLine(" Line Items;");
strXPathQuery =
foreach (SnlNode nodDetail in xmlDataDoc. SelectNodes(strXPathauery)}
1
Console.WriteLine( "\tProductID= " +
nodDetail,ChildNodes[1]. InnerText);
Console. WriteLine("\tQuantity = " +
nodDetail.ChildNodes[2].InnerText);
Console. Wntel-ine("\tUnitPrice = +
nodDetail. ChildNodes[3] InnerText);
Console. WriteLineO;
Кэширование обновлений XML-документа
Как я уже говорил, способ, которым ХМ,-о*дменты поддерживают сведения о С1Х-10ЯШШ, не позволяет передавать изменения ХМ1- до?,у ментов в БД. Объект Х^Ю-а'я.Ооси-ттреализует такую функциональность, синхронизируя XML-доку-мент и объект ВагаБег. Когда вы изменяете содержимое XML-документа, ХтЮШа-Вооитепг изменяет соответствующие данные объекта ВагаБег. Благодаря этому, ВагаБег содержит всю информацию, необходимую для передачи изменения в БД.
Следующий фрагмент кода демонстрирует эту функциональность. Он с помощью запроса К1'аг|. находит заказ и изменяет содержимое дочернего узла с идем-
466
Часть Автономная работа с данными: объект DataSet модели adO.net
клиента <Qi<tonm1 !)•. который разместил данный заказ. Затем код
просматривает содержимое соответствующего объекта IkttaR'.ur, мок.мыгсш. что в объекте есть и текущее, и поля < Л1ч< HiicrlL). Для передачи
изменения в БД можно воспользоваться объектом t k/taAila/eciи оюшоп. полной логикой.
Прежде чем изменить содержимое XML-документа, код задаст свойству Enforce-СШШгШт объекта DataSet значение False. Без этой строчки кода ADO.NET генерировала бы исключение. Если вы с помощью объекта XmlDataDocument попытаетесь изменить содержимое объекта DataSet, значение свойства EnforceConstraints которого — True, система выдаст oiiinnicy.
Visual Basic NET
'Добавьте в начало модуля кода следующую строку Imports System.Xml
Dim ds As New DataSat() FillMyOataSet(ds)
Dim tblOrders As OataTable = d$.Ta&les("Orders") tblOrders.PrimaryKey = New DataColumn()
{tblOrders.Columns("OrderlD")) Dim xmlDataDoc As New XmlDataDocunrenUds) Dim nodOrder, nodDetail As XmlNode
Dim strXPathQuery As String = 7NewDataSet/Qrders[OrderID=10268]" nodOrder = xmlDataDoc.SelectSingleNode(strXPathQuery) ds. EnforceConstraints = False
=
ds.EnforceConstraints = True Dim row As DataRow = tblOrders.Rows. Find( 10263) Console.WriteLineCOrderlD = " & rowC'OrderlD")) Console.WriteLine(vbTab & "Current CustomerlD = " &. _
row("CustomerlD")) Console. WriteLinefvbTab & "Original CustomerlD = " & _
row("CustomerlD", DataRowVersion.0riginal))
Visual C# NET
//Добавьте в начало модуля кода следующую строку using System. Xml;
DataSet ds = new DataSetO; 'lFillMyDataSet(ds);
OataTable tblOrders = ds.TablesrOrders"]; tblOrders.PrimaryKay = new OataCoiumnC]
{tblOrders.Columns["OrderIO"]}; XmlDataDocument xmlDataDoc = new XirlDataDoct-nienttds); XmlNode nodOrder, nodDetail;
string strXPathQuery = 7NewDataSet/0rders[0rderID=10268]"; nodOrder = xmlDataDoc.SelectSingleNode(strXPathQuery); ds.EnforceConstraints = false;
ГЛАВА 12 Работа с XML-данными
467
nociOrdsг. ChiidNodesf Ц. InnerText = "ALFKI";
ds.EnforceConstraints = true;
oaiaRovs row = tblOrders.Rows. Find(10268);
Console.WriteUne( "OrderlD = " + row["Order1С"]);
Console.WriteLine("\tCurrent CustomerlD = " + row["'CustQmerID")};
Console.WrlteLineCAtOrlginal CustomerlD = " +
row["CustomerlD", DataRowVersion.0rlginal]);
Как видно, изменения теперь кмшируктя в объекте DataSet. По они передаются в БД с помощью объекта ?a;.c^jzz?.Kzr.
Предыдущая << 1 .. 196 197 198 199 200 201 < 202 > 203 204 205 206 207 208 .. 260 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100