Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server
База данных SQL Azure Управляемый экземпляр SQL Azure
В этой статье описываются параметры, доступные для работы с типом данных XML в приложении. В этой статье содержатся сведения о следующем:
Обработка XML из столбца типа XML с помощью ADO и собственного клиента SQL Server
Обработка XML в столбцах типа xml с помощью ADO.NET
Обработка типа xml в параметрах с помощью ADO.NET
Обработка XML из столбца типа XML с помощью ADO и собственного клиента SQL Server
Чтобы использовать компоненты MDAC для доступа к типам и функциям, представленным в SQL Server 2005 (9.x), необходимо задать свойство инициализации DataTypeCompatibility в строка подключения ADO.
Например, в следующем образце скрипта Visual Basic Scripting Edition (VBScript) выдается результат запроса столбца , содержащего данные типа xml Demographics
, из таблицы Sales.Store
образца базы данных AdventureWorks2022
. В частности, запрос производит поиск значения столбца для строки, в которой значение CustomerID
равно 3
.
Const DS = "MyServer"
Const DB = "AdventureWorks2022"
Set objConn = CreateObject("ADODB.Connection")
Set objRs = CreateObject("ADODB.Recordset")
CommandText = "SELECT Demographics" & _
" FROM Sales.Store" & _
" INNER JOIN Sales.Customer" & _
" ON Sales.Store.BusinessEntityID = sales.customer.StoreID" & _
" WHERE Sales.Customer.CustomerID = 3" & _
" OR Sales.Customer.CustomerID = 4"
ConnectionString = "Provider=MSOLEDBSQL" & _
";Data Source=" & DS & _
";Initial Catalog=" & DB & _
";Integrated Security=SSPI;" & _
"DataTypeCompatibility=80"
'Connect to the data source.
objConn.Open ConnectionString
'Execute command through the connection and display
Set objRs = objConn.Execute(CommandText)
Dim rowcount
rowcount = 0
Do While Not objRs.EOF
rowcount = rowcount + 1
MsgBox "Row " & rowcount & _
vbCrLf & vbCrLf & objRs(0)
objRs.MoveNext
Loop
'Clean up.
objRs.Close
objConn.Close
Set objRs = Nothing
Set objConn = Nothing
В этом примере показано, как настроить свойство совместимости типов данных. По умолчанию это значение равно 0 при использовании собственного клиента SQL Server. Если задать значение 80, поставщик клиента SQL Server Native будет представлять xml-столбцы и столбцы пользовательских типов как типы данных SQL Server 2000 (8.x). то есть DBTYPE_WSTR и DBTYPE_BYTES соответственно.
Примечание.
SQL Server Native Client (SNAC) не поставляется с:
- SQL Server 2022 (16.x) и более поздних версий
- SQL Server Management Studio 19 и более поздних версий
Собственный клиент SQL Server (SQLNCLI или SQLNCLI11) и устаревший поставщик Microsoft OLE DB для SQL Server (SQLOLEDB) не рекомендуется для разработки новых приложений.
Для новых проектов используйте один из следующих драйверов:
Сведения о компонентах SQLNCLI, поставляемых вместе с механизмом базы данных SQL Server (версий с 2012 по 2019 г.), см. в этом документе о исключении жизненного цикла поддержки.
Тестирование этого примера
Убедитесь, что на клиентском компьютере установлен собственный клиент SQL Server и что MDAC 2.6.0or позже доступен на клиентском компьютере.
Дополнительные сведения см. в статье Программирование SQL Server Native Client.
Убедитесь, что образец
AdventureWorks2022
базы данных в SQL Server установлен.Для этого примера требуется образец базы данных
AdventureWorks2022
.Скопируйте код, показанный ранее в этой статье, и вставьте код в текстовый или редактор кода. Сохраните файл под именем HandlingXmlDataType.vbs.
Измените скрипт по мере необходимости для установки SQL Server и сохраните изменения.
Например, если
MyServer
указано, его следует заменить на(local)
или фактическое имя сервера, на котором установлен SQL Server.Запустите файл скрипта HandlingXmlDataType.vbs на выполнение.
Результат должен примерно соответствовать следующему:
Row 1
<StoreSurvey xmlns="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/StoreSurvey">
<AnnualSales>1500000</AnnualSales>
<AnnualRevenue>150000</AnnualRevenue>
<BankName>Primary International</BankName>
<BusinessType>OS</BusinessType>
<YearOpened>1974</YearOpened>
<Specialty>Road</Specialty>
<SquareFeet>38000</SquareFeet>
<Brands>3</Brands>
<Internet>DSL</Internet>
<NumberEmployees>40</NumberEmployees>
</StoreSurvey>
Row 2
<StoreSurvey xmlns="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/StoreSurvey">
<AnnualSales>300000</AnnualSales>
<AnnualRevenue>30000</AnnualRevenue>
<BankName>United Security</BankName>
<BusinessType>BM</BusinessType>
<YearOpened>1976</YearOpened>
<Specialty>Road</Specialty>
<SquareFeet>6000</SquareFeet>
<Brands>2</Brands>
<Internet>DSL</Internet>
<NumberEmployees>5</NumberEmployees>
</StoreSurvey>
Обработка XML из столбца типа XML с помощью ADO.NET
Для обработки XML из столбца типа данных XML с помощью ADO.NET и платформы Microsoft .NET Framework можно использовать стандартное поведение класса SqlCommand. Например, столбец типа данных XML и его значения можно получить так же, как любой столбец SQL извлекается с помощью SqlDataReader. Однако если вы хотите работать с содержимым столбца типа данных XML в виде XML , сначала необходимо назначить содержимое типу XmlReader .
Дополнительные сведения и примеры кода см. в разделе "Значения столбцов XML в ридере данных" в документации Microsoft .NET Framework 2.0 SDK.
Обработка столбца типа XML в параметрах с помощью ADO.NET
Чтобы обрабатывать тип данных XML, переданный как параметр в ADO.NET и .NET Framework, можно представить значение как экземпляр типа данных SqlXml. Не используется специальная обработка, так как столбцы типа данных XML в SQL Server могут принимать значения параметров так же, как и другие столбцы и типы данных, такие как строка или целое число.
Дополнительные сведения и пример кода см. в разделе "XML-значения в качестве параметров команд" по теме в документации по пакету SDK Microsoft платформы .NET Framework 2.0.