使用C#将大型二进制数据保存到sql DB中
我需要一个代码来使用 C# 将(最终很大)文件存储到数据库中。
我正在使用的解决方案是这样的: (我在数据库中使用varbinary(MAX)列)
1)创建SqlCommand
2)创建SqlParameter
3)设置parameter.Value = File.ReadAllBytes(filePath)
4)执行SqlCommand
有没有更有效的解决方案?由于文件可能很大,因此当将所有字节读入内存然后将它们存储到数据库中时,我担心会出现性能问题。
先感谢您
I need a code to store (eventually large) files into DB using C#.
The solution I'm using is sth like:
(I'm using varbinary(MAX) column in the DB)
1) Create SqlCommand
2) Create SqlParameter
3) Set parameter.Value = File.ReadAllBytes(filePath)
4) Execute SqlCommand
Is there any more effective solution? Since the file can be large, I'm affraid of performance problems, when reading all bytes into memory, and then storing them into DB.
Thank you in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我现在面临着同样的问题。有一种方法可以顺序写入 varbinary 字段。请参阅本文:“通过 ASP.NET MVC 从 SQL Server 下载和上传图像” http:// /www.codeproject.com/KB/aspnet/streamingblobhttp.aspx
它展示了一种使用如下命令的方法:
这允许将数据块写入列中,而无需读取整个文件。
I'm facing the same issue right now. There is a way to sequentially write into varbinary fields. See this article: 'Download and Upload Images from SQL Server via ASP.NET MVC' http://www.codeproject.com/KB/aspnet/streamingblobhttp.aspx
It shows a way to use a command like:
This allows writing chunks of data into your column without having to read an entire file.
您所拥有的是
varbinary(MAX)
列所能获得的最好结果。虽然您可以将数据传出数据库,但无法将其传入。What you have is the best you can get with a
varbinary(MAX)
column. While you can stream data out of the database, there's no way to stream it in.