2009-09-29 185 views
0

我的程序有保存附件的代碼,我希望將這些附件傳輸到數據庫,並且我將使用存儲過程來完成此操作。SQL存儲過程:如何將文件集合傳遞給存儲過程?

我需要知道什麼是@param類型來接受二進制文件的數組?

終於有一次,我有這個數組,如何將這些數據插入到一個SQL表?

我想我使用一個字節[]爲1文件,但如何從C#或.net字節數組的集合傳遞給SP,以及參數類型應接受此數組字節[]

更新

需要一個解決方案,將在2005年的工作和2008年

更新

我決定送廢話一個大型SP來處理一切的想法。相反,我將擁有較小的SP,然後在.net中處理交易。

您是否認爲這將是一個更好的解決方案,用於處理.net數據對象中的事務?

+0

您使用哪種SQL方言作爲答案會有所不同 – Mark 2009-09-29 09:58:55

+0

MS SQL 2005,2008 – 2009-09-29 10:02:13

回答

0

我決定只創建一個SP,並多次調用它,每個文件需要上傳一個,然後使用C#代碼管理事務。

1

如果您只需要傳遞值數組,我會建議將它們格式化爲XML並將它們作爲SQL xml數據類型傳遞。您可以像使用表一樣方便地使用SQL執行select操作。

如果您傳遞XML中的二進制數據,它也可能在技術上有效,但我不確定這是否是一個好的解決方案。無論如何,這是一個選擇。

+0

我需要傳遞一個byte []數組。這種情況下的XML不能滿足嗎? – 2009-09-29 10:14:28

+0

Xml應該適用於您的場景。見OpenXML: http://msdn.microsoft.com/en-us/library/ms186918.aspx – 2009-09-29 10:18:30

1

對於SQL Server 2008,可以使用表值參數功能。

這允許您定義表類型的參數,然後將值作爲來自C#代碼的DataTable提供給該參數。

看到這些博客文章和文章的詳細資料:

這是SQL Server 2008中的一項新功能,讓你不會有這樣的SQL Server 2000或2005.

更新:如果您還需要支持SQL Server 2005,請查看Erland Sommarskog的優秀ar微粒Arrays and Lists in SQL Server 2005。它提供了關於如何做到這一點在2005年

馬克

+0

謝謝,但我需要一個解決方案,將在2005年工作。然而,我決定從等式中減去2000。 – 2009-09-29 10:29:08

相關問題