Реклама:

Объект System.Xml.XmlTextReader может использоваться для чтения потока XML-данных, возвращаемых, например, оператором SELECT ...FOR XML (SQL Server 2000). Рассмотрим использование ридера на примере.

Пример. Пусть в базе данных VUZ (SQL Server) имеется хранимая процедура SELECTXML:

CREATE PROCEDURE SELECTXML AS

select KK, Nazv, Fakultet from Kaf

for XML AUTO

GO

Если выполнить эту процедуру в среде утилиты Query Analyzer (SQL Server 2000):

EXEC SELECTXML получим следующий результат в XML-виде:

<Kaf KK="1" Nazv="Aвтомобилей" Fakultet="Технический"/> <Kaf KK="3" Nazv="Aвтоматики " Fakultet="Технический"/> <Kaf KK="11" Nazv="Математики" Fakultet="Гуманитарный"/>

Выполним в приложении Windows следующий код для вызова процедуры и считывания возвращаемого результата в элемент управления listBox1:

listBox1.Items.Clear(); //---соединение

SqlConnection cn = new SqlConnection(

"data source=PAVLIK-5 0R6ZD;initial catalog=VUZ;" + "integrated security=SSPI;" + "persist security info=False;" +

"workstation id= PAVLIK -5 0R6ZD;packet size=4096"); //--- команда

SqlCommand cmd = new SqlCommand("SELECTXML", cn); cmd.CommandType = CommandType.StoredProcedure; //---ридер XmlTextReader x; try

{

//---открываем соединение cn.Open();

//---выполняем команду

x = (XmlTextReader) cmd.ExecuteXmlReader(); //--- читаем ридер while (x.Read()) {

//---если текущий узел соответствует таблице Kaf,

//---поместить значения полей в listBox1

if (x.Name == "Kaf")

{

listBox1.Items.Add(x.GetAttribute(0) +

(char)9 + x.GetAttribute(1) + (char)9 +

x.GetAttribute("Sostav"));

}

}

//---закроем ридер

x.Close();

}

catch (Exception ex)

{

MessageBox.Show("Ошибка : " + ex.Message);

}

finally {

//---закроем соединение

cn.Close();

}

Результат выполнения показан на рис. 5.13.

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 5.13

■Н^^Н ЧАСТЬ 6 ЗАПОМИНАНИЕ ОТЛОЖЕННЫХ ИЗМЕНЕНИЙ В ИСТОЧНИКЕ ДАННЫХ

6.1. Подтверждение и откат внесенных в данные изменений

После того как данные из источника данных были залиты в набор данных приложения, приложение разрывает соединение с источником данных и работает с данными в автономном режиме.

В процессе автономного использования данных в приложении в них могут вноситься изменения. А именно записи могут добавляться, удаляться и значения столбцов записи могут корректироваться. Все эти изменения не известны в источнике данных до тех пор, пока мы их там не актуализируем.

При актуализации изменений в приложении выбираются все измененные записи. Потом они как бы перебираются по одной. Для каждой измененной записи к источнику отсылается соответствующая инструкция на изменение. Например, пусть источник - базы данных SQL Server. Для каждой удаленной в приложении записи к серверу отсылается оператор DELETE; для каждой добавленной к приложению записи - оператор INSERT; для каждой откорректированной - оператор UPDATE. Все эти операторы снабжаются соответствующими параметрами.

После актуализации данные в источнике и в приложении приходят в согласованное состояние, т. е. значения записей, присутствующие и в таблицах источника и в таблицах набора в приложении, не отличаются.


⇐ Предыдущая страница| |Следующая страница ⇒