* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Извлечение данных XML из баз данных SQL Server 2000
8 февраля 2009
SQL Server 2000 содержит встроенную поддержку доступа к данным XML, благода- ря которой удается извлекать из БД и записывать в память данные в этом формате. Эту поддержку обеспечивает провайдер данных ADO.NET для SQL Server. Получение объекта XmlReader с помощью SqlCommand
Класс SqlCommand поддерживает метод для извлечения данных в формате XML — ExecuteXmiReader. Этот метод возвращает объект XmlReader, предоставляющий дан- ные, которые вернул класс SqlCommand., в виде набора строк в формате XML. При этом в SQL-запросе SELECT, который исполняет метод ExecuteXmi Reader, должна быть конструкция FOR XML. Это метод поддерживает только класс SqlCommand и применяется для подключения к БД SQL Server 2000 и выше. Класс XmlReader во многом напоминает DataReader: он предоставляет доступ к XML-данным, полученным в результате исполнения запроса, только для однона- правленного чтения. Как и DataReader, класс XmlReadenpe6yer монопольного до- ступа к объекту соединения. Объект XmlReader поддерживает метод Read, похожий на метод Read объекта DataReader, и позволяет перебирать узлы XML-документа. Этот метод Read, подоб- но одноименному методу объекта DataReader, устанавливает указатель на следую- щий узел XML-потока и возвращает значение false по достижении последнего узла. Как и в случае DataReader, следует вызвать метод Read, чтобы сделать доступным первый узел. Следующий пример демонстрирует извлечение объекта XmlReader и чтение возвращаемого им потока XML: Visual Basic .NET Этот пример предполагает наличие действительного ' объекта SqlConnection с именем SqlConnectionl. Dim myReader As Xml.XmlReader Dim mySQLCornmand As New SqlClient.SqlComrnandf "SELECT * FROM Customers FOR XML AUTO, XMLDATA", SqlConnectionl) SqlConnectionl.Open myReader = mySQLCornmand. ExecuteXmlReader() While myReader.Read() 1 Вывести содержимое данного узла и любых дочерних 1 узлов, включая разметку, на консоль. Console. WriteLine(myReade г. ReadOuterXmlQ) End While myReader.Close SqlConnectionl.Close Visual C# // Этот пример предполагает наличие действительного // объекта SqlConnection с именем SqlConnectionl. System.Xml.XmlReader myReader; SqlCommand mySQLComrnand = new SqlCommand( "SELECT * FROM Customers FOR XML AUTO, XMLDATA", SqlConnectionl); SqlConnectionl.Open(); myReader = mySQLCommand.ExecuteXmlReader(); while (myReader.ReadO) { // Вывести содержимое данного узла и любых дочерних // узлов, включая разметку, на консоль. Console.WriteLine(myReader.ReadOuterXml()); ! myReader.Close(); SqlConnectionl. CloseO;