我的程序有代码保存附件,我希望将这些附件传输到数据库,我将使用存储过程来完成此操作。
我需要知道什么是@param类型才能接受二进制文件数组?
最后我有了这个数组,如何将这些数据插入到SQL表中?
我想我正在考虑为1个文件使用byte [],但是如何从C#或.net传递一个字节数组到SP,并且param类型应该接受这个字节数组[]
更新
需要一个适用于2005年和2008年的解决方案。
更新
我决定放弃使用1个大SP处理所有内容的想法。相反,我将有更小的SP,然后处理.net中的事务。
你认为这是一个更好的解决方案,来处理.net数据对象中的事务吗?
答案 0 :(得分:1)
如果您只需要传递一组值,我建议将它们格式化为XML并将它们作为SQL xml数据类型传递。您可以像使用SQL一样轻松地使用SQL执行XML选择。
如果您以XML格式传递二进制数据,它在技术上也可以工作,但我不确定它是否是一个很好的解决方案。无论如何,这是一个选择。
答案 1 :(得分:1)
对于SQL Server 2008,您可以使用表值参数功能。
这允许您定义表类型的参数,然后从C#代码中将该值作为DataTable
提供给该参数。
有关详细信息,请参阅这些博客文章和文章:
这是SQL Server 2008的一项新功能,因此您不会在SQL Server 2000或2005中使用此功能。
更新:如果您还需要支持SQL Server 2005,请查看Erland Sommarskog的优秀文章Arrays and Lists in SQL Server 2005。它提供了一些关于如何在2005年实现这一目标的想法。
马克
答案 2 :(得分:1)
见Arrays and Lists in SQL 2005。本文汇总了几乎所有技术,并讨论了每种方法的优点和问题。
答案 3 :(得分:0)
我决定只创建一个SP,并多次调用它,每个文件需要上传一个,并使用C#代码管理事务。