Jika Anda hanya perlu menyimpan XML dan tidak melakukan hal lain, ini mungkin cara termudah untuk melakukannya - menggunakan ADO.NET sederhana:
string query = "SELECT EmployeeID, LastName, FirstName, Title, BirthDate, HireDate FROM dbo.Employees FOR XML AUTO";
using(SqlConnection _con = new SqlConnection("server=(local);database=Northwind;integrated security=SSPI;"))
using (SqlCommand _cmd = new SqlCommand(query, _con))
{
_con.Open();
string result = _cmd.ExecuteScalar().ToString();
_con.Close();
File.WriteAllText(@"D:\test.xml", result);
}
Ini akan membuat file D:\test.xml
(atau ubah agar sesuai dengan sistem Anda) dan akan memasukkan tag XML tersebut ke dalam file tersebut.
SqlCommand
objek juga memiliki .ExecuteXmlReader()
metode yang akan mengembalikan XmlReader
objek untuk memindai dan memanipulasi XML - bukan hanya mengembalikan string. Gunakan apa pun yang paling masuk akal bagi Anda!
PS:juga, output dari FOR XML AUTO
adalah sedikit .... katakanlah ... suboptimal. Ini menggunakan dbo.Employee
karena ini adalah tag XML utama dan seterusnya... dengan SQL Server 2008, saya sangat menyarankan Anda untuk menggunakan FOR XML PATH
sebagai gantinya - ini memungkinkan Anda untuk mengubah dan menyesuaikan tata letak keluaran XML.
Bandingkan keluaran XML asli Anda dengan FOR XML AUTO
<dbo.Employees _x0040_ID="1" LastName="Davolio" FirstName="Nancy" Title="Sales Representative" BirthDate="1948-12-08T00:00:00" HireDate="1992-05-01T00:00:00" />
<dbo.Employees _x0040_ID="2" LastName="Fuller" FirstName="Andrew" Title="Vice President, Sales" BirthDate="1952-02-19T00:00:00" HireDate="1992-08-14T00:00:00" />
terhadap kueri ini - hanya untuk melihat perbedaannya:
SELECT
[EmployeeID] AS '@ID',
[LastName], [FirstName],
[Title],
[BirthDate], [HireDate]
FROM
[dbo].[Employees]
FOR XML PATH('Employee'), ROOT('Employees')
Keluarannya adalah:
<Employees>
<Employee ID="1">
<LastName>Davolio</LastName>
<FirstName>Nancy</FirstName>
<Title>Sales Representative</Title>
<BirthDate>1948-12-08T00:00:00</BirthDate>
<HireDate>1992-05-01T00:00:00</HireDate>
</Employee>
<Employee ID="2">
<LastName>Fuller</LastName>
<FirstName>Andrew</FirstName>
<Title>Vice President, Sales</Title>
<BirthDate>1952-02-19T00:00:00</BirthDate>
<HireDate>1992-08-14T00:00:00</HireDate>
</Employee>