gpt4 book ai didi

sql-server-2008 - 如何使用 SQL Server 查询导出 XML?

转载 作者:行者123 更新时间:2023-12-04 07:19:23 25 4
gpt4 key购买 nike

假设我有一张 table Employee像这样

EmpID, EmpName

1 , hatem

我写了一个查询: select * from Employee for xml auto
所以输出将是 XML 格式。

我想知道如何将结果导出到 XML 文件以保存在我的计算机驱动器上,因为我需要从此文件夹中读取 XML 文件并在我的 .net 应用程序中反序列化它们。

最佳答案

如果您只需要存储 XML 而不需要对其进行任何其他操作,这可能是完成此操作的最简单方法 - 使用简单的 ADO.NET:

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);
}

这将创建一个文件 D:\test.xml (或更改它以匹配您的系统)并将这些 XML 标记放入该文件中。
SqlCommand对象也有一个 .ExecuteXmlReader()将返回 XmlReader 的方法对象来扫描和操作 XML - 不仅仅是返回一个字符串。使用对您最有意义的任何东西!

PS:还有 FOR XML AUTO的输出有点......让我们说......次优。它使用 dbo.Employee因为它是主要的 XML 标记等等...对于 SQL Server 2008,我强烈建议您考虑使用 FOR XML PATH相反 - 它允许您调整和自定义 XML 输出的布局。

将原始 XML 输出与 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" />

针对此查询 - 只是为了查看差异:
SELECT 
[EmployeeID] AS '@ID',
[LastName], [FirstName],
[Title],
[BirthDate], [HireDate]
FROM
[dbo].[Employees]
FOR XML PATH('Employee'), ROOT('Employees')

输出是:
<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>

关于sql-server-2008 - 如何使用 SQL Server 查询导出 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3952469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com