2012-03-23 159 views
1

我正在創建一個需要從名爲SalesOrders的SQL Server表中讀取條目的DotNetNuke模塊。該模塊只能顯示那些STatus = Pending的記錄。我需要從我的數據庫表中創建一個XML文件,以選擇上面的記錄。這是如何在Visual Studio 2010中完成的?我開始使用XML Schema Explorer手動創建XSD。不知道這是否正確?請注意,我需要進行XSL轉換,以便我可以將XML文件的內容提供給我的模塊,以便我可以允許用戶在給定的日期範圍內選擇發票。在該模塊中,用戶需要爲從XML文件讀取的每個發票啓用複選框,並將其標記爲已付款。如何從SQL Server表生成XML/XSD?

我是否採取了相對於手動創建XSD的適當方法,還是有更自動化的方法?

非常感謝!

+0

這可以「即時」完成,以便新的XML文件始終可用? – SidC 2012-03-23 06:38:18

+0

真棒鏈接。這應該在單獨的類文件中還是在ascx.cs文件中完成? – SidC 2012-03-23 06:46:14

回答

2

此代碼將填充一個DataTable然後將其寫入到一個XML字符串:

DataTable dt = new DataTable(); 
    using (System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["connection"].ConnectionString)) 
    { 
     connection.Open(); 

     System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand(); 
     command.Connection = connection; 

     command.CommandText = @"SELECT * FROM SalesOrders WHERE STatus = 'Pending'"; 

     System.Data.SqlClient.SqlDataAdapter adapter = new System.Data.SqlClient.SqlDataAdapter(command); 
     adapter.Fill(dt); 
    } 
    MemoryStream ms = new MemoryStream(); 
    dt.WriteXml(ms, XmlWriteMode.IgnoreSchema); 
    ms.Seek(0, SeekOrigin.Begin); 
    StreamReader sr = new StreamReader(ms); 
    string xml = sr.ReadToEnd(); 
    ms.Close(); 
    return xml; 

你可以使用不同的方法來填充數據表,如果你想

+0

謝謝:)我如何設置連接到SalesOrderDetail和RecurringSalesOrders?我是否創建3個單獨的數據表並將其導出到3個單獨的XML Fiels,或者1個數據表可以通過連接從SalesOrders的其他2個表中?如果有3個單獨的數據表,我可以分別爲每個數據表調用WriteXml嗎? – SidC 2012-03-23 16:15:52

0

從SQL Server表創建一個DataTable,然後使用然後使用DataTable.WriteXml將數據導出到XML文件。

0

這是一個簡單的方法。

DECLARE @xmlDoc XML 
SET @xmlDoc = 
    (
     SELECT * from Employees where EmployeeID IN  (7032,7478,6967,6862,6861,7469,6947,6951,7009,7010) 
     FOR XML AUTO, ELEMENTS, BINARY BASE64 
) 
SELECT @xmlDoc