Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Jeśli zapytanie wymaga parametru, którego wartość jest ciągiem XML, deweloperzy mogą podać wartość przy użyciu wystąpienia typu danych SqlXml . Naprawdę nie ma sztuczek; Kolumny XML w programie SQL Server akceptują wartości parametrów w dokładnie taki sam sposób jak inne typy danych.
Example
Poniższa aplikacja konsolowa tworzy nową tabelę w bazie danych AdventureWorks . Nowa tabela zawiera kolumnę o nazwie SalesID i kolumnę XML o nazwie SalesInfo.
Uwaga / Notatka
Przykładowa baza danych AdventureWorks nie jest instalowana domyślnie podczas instalowania programu SQL Server. Można go zainstalować, uruchamiając instalatora programu SQL Server.
W przykładzie SqlCommand obiekt przygotowuje się do wstawienia wiersza w nowej tabeli. Zapisany plik zawiera dane XML potrzebne dla kolumny SalesInfo .
Aby utworzyć plik wymagany do uruchomienia przykładu, utwórz nowy plik tekstowy w tym samym folderze co projekt. Nadaj plikowi nazwę MyTestStoreData.xml. Otwórz plik w Notatniku i skopiuj i wklej następujący tekst:
<StoreSurvey xmlns="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/StoreSurvey">
<AnnualSales>300000</AnnualSales>
<AnnualRevenue>30000</AnnualRevenue>
<BankName>International Bank</BankName>
<BusinessType>BM</BusinessType>
<YearOpened>1970</YearOpened>
<Specialty>Road</Specialty>
<SquareFeet>7000</SquareFeet>
<Brands>3</Brands>
<Internet>T1</Internet>
<NumberEmployees>2</NumberEmployees>
</StoreSurvey>
using System;
using System.Data;
using Microsoft.Data.SqlClient;
using System.Xml;
using System.Data.SqlTypes;
class Class1
{
static void Main()
{
using (SqlConnection connection = new SqlConnection(GetConnectionString()))
{
connection.Open();
// Create a sample table (dropping first if it already
// exists.)
string commandNewTable =
"IF EXISTS (SELECT * FROM dbo.sysobjects " +
"WHERE id = " +
"object_id(N'[dbo].[XmlDataTypeSample]') " +
"AND OBJECTPROPERTY(id, N'IsUserTable') = 1) " +
"DROP TABLE [dbo].[XmlDataTypeSample];" +
"CREATE TABLE [dbo].[XmlDataTypeSample](" +
"[SalesID] [int] IDENTITY(1,1) NOT NULL, " +
"[SalesInfo] [xml])";
SqlCommand commandAdd =
new SqlCommand(commandNewTable, connection);
commandAdd.ExecuteNonQuery();
string commandText =
"INSERT INTO [dbo].[XmlDataTypeSample] " +
"([SalesInfo] ) " +
"VALUES(@xmlParameter )";
SqlCommand command =
new SqlCommand(commandText, connection);
// Read the saved XML document as a
// SqlXml-data typed variable.
SqlXml newXml =
new SqlXml(new XmlTextReader("MyTestStoreData.xml"));
// Supply the SqlXml value for the value of the parameter.
command.Parameters.AddWithValue("@xmlParameter", newXml);
int result = command.ExecuteNonQuery();
Console.WriteLine(result + " row was added.");
Console.WriteLine("Press Enter to continue.");
Console.ReadLine();
}
}
private static string GetConnectionString()
{
// To avoid storing the connection string in your code,
// you can retrieve it from a configuration file.
return "Data Source=(local);Integrated Security=true;" +
"Initial Catalog=AdventureWorks; ";
}
}