5

我的主要编码理想是在 .net 应用程序上。所以我在应用程序设计方面的技能有限。

我正在尝试将整个表从数据库(使用视图)导出到 XML 文件(然后希望将其导出到电子表格 - 我已经查看并未能找到直接的方法)。

我使用以下代码仅成功将 1 列导出到 xml 文件:

DataConn.UserName = "***";
DataConn.Password = "***";
DataConn.SqlServer = "***";
DataConn.Database = "***";

const string strSql = "SELECT TOP 1 * FROM vwGetStaffDetails FOR XML AUTO";

using (SqlCommand sqlComm = new SqlCommand(strSql, DataConn.Connect()) { CommandType = CommandType.Text })
{
     string result = sqlComm.ExecuteScalar().ToString();

     File.WriteAllText(@"C:\Temp\text.xml", result);
 }

每当我使用ExecuteReaderorExecuteXmlReader时,我都没有得到任何实际结果。

我将如何获得所有字段?

编辑:我必须使用Top 1才能Execute Scalar正常工作。

使用以下解决方案,我的文件显示:

<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <Table>
    <XML_F52E2B61-18A1-11d1-B105-00805F49916B>&lt;vwGetStaffDetails ImageLoc="****.jpg" LName="GAINES" FName="****" StaffTitle="****" JobPosition="****" Email="***@***.com" Code="***" Number="******" PhoneTypeID="1"/&gt;</XML_F52E2B61-18A1-11d1-B105-00805F49916B>
  </Table>
</NewDataSet>

它正在编写&lt;等而不是正确的 XML。有什么办法可以解决吗?

4

2 回答 2

7

您可以使用 aSqlDataAdapterSystem.Data.DataSet加载 a DataTable,这将写入 XML。

const string strSql = "SELECT * FROM vwGetStaffDetails";

using (SqlCommand sqlComm = new SqlCommand(strSql, DataConn.Connect()) { CommandType = CommandType.Text })
{
    SqlDataAdapter da = new SqlDataAdapter(sqlComm);
    DataSet ds = new DataSet();
    da.Fill(ds);
    ds.Tables[0].WriteXml(@"C:\Temp\text.xml");
}

编辑使用此方法,您将从 SQL 中删除 XML 代码,并让 .NET 转换所有内容。我已经更改了您的 SQL 命令以反映这一点。

于 2012-11-02T12:19:56.267 回答
0

您可能想看看如何编写输出为 XML 的查询。
互联网上有很多关于此的示例和教程。这个http://msdn.microsoft.com/en-us/library/bb510462.aspx就是其中之一。

如果我没记错的话,返回的输出应该是一个包含完整 XML 内容的字符串。

于 2012-11-02T12:25:09.100 回答