我的主要编码理想是在.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);
}
Run Code Online (Sandbox Code Playgroud)
每当我使用ExecuteReader或ExecuteXmlReader,我都没有得到任何实际结果.
我怎么能得到所有的田地?
编辑:我不得不用它Top 1来搞定Execute Scalar工作.
使用以下解决方案,我的文件显示:
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Table>
<XML_F52E2B61-18A1-11d1-B105-00805F49916B><vwGetStaffDetails ImageLoc="****.jpg" LName="GAINES" FName="****" StaffTitle="****" JobPosition="****" Email="***@***.com" Code="***" Number="******" PhoneTypeID="1"/></XML_F52E2B61-18A1-11d1-B105-00805F49916B>
</Table>
</NewDataSet>
Run Code Online (Sandbox Code Playgroud)
它正在编写<等而不是正确的XML.有什么方法可以解决它吗?
您可以使用SqlDataAdapter和System.Data.DataSet加载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");
}
Run Code Online (Sandbox Code Playgroud)
编辑使用此方法,您将从SQL中删除XML代码,并让.NET转换所有内容.我已经更改了SQL命令以反映这一点.