假设我有一张Employee这样的桌子
EmpID, EmpName
1 , hatem
Run Code Online (Sandbox Code Playgroud)
我写了一个查询: select * from Employee for xml auto
所以输出将是XML格式.
我想知道如何将结果导出到XML文件以保存在我的计算机驱动器上,因为我需要从此文件夹中读取XML文件并在我的.net应用程序中反序列化它们.
mar*_*c_s 15
如果您只需要存储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);
}
Run Code Online (Sandbox Code Playgroud)
这将创建一个文件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" />
Run Code Online (Sandbox Code Playgroud)
针对此查询 - 只是为了看到差异:
SELECT
[EmployeeID] AS '@ID',
[LastName], [FirstName],
[Title],
[BirthDate], [HireDate]
FROM
[dbo].[Employees]
FOR XML PATH('Employee'), ROOT('Employees')
Run Code Online (Sandbox Code Playgroud)
输出是:
<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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33583 次 |
| 最近记录: |