2012-11-02 54 views
5

我的主要編碼理想是在.net應用程序中。所以我的應用程序設計技能有限。如何將完整的SQL表導出爲XML

我想從數據庫(使用視圖)導出到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); 
} 

每當我使用ExecuteReaderExecuteXmlReader,我沒有得到任何實際的結果。

我將如何獲得所有的領域?

編輯:我不得不使用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。有什麼方法可以解決它?

回答

7

您可以使用SqlDataAdapterSystem.Data.DataSet加載將寫入XML的DataTable

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命令來反映這一點。

+0

令人驚歎!但是..檢查我的編輯。 – TheGeekZn

+0

剛剛編輯我的答案,如果你想使用這種方法,你從SQL中刪除XML處理,讓.NET轉換一切。 –

+0

Your'e amazing:D謝謝你..我希望這可以幫助任何正在尋找答案的人。 – TheGeekZn