2009-09-29 187 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

相关问题