我需要一个代码,使用C#将文件(最终大)存储到数据库中。
我正在使用的解决方案是: (我在DB中使用varbinary(MAX)列)
1)创建SqlCommand
2)创建SqlParameter
3)设置parameter.Value = File.ReadAllBytes(filePath)
4)执行SqlCommand
还有更有效的解决方案吗?由于文件可能很大,因此在将所有字节读入内存时,我会担心性能问题,然后将它们存储到数据库中。
提前谢谢
答案 0 :(得分:3)
我现在面临同样的问题。有一种顺序写入varbinary字段的方法。请参阅此文章:'通过ASP.NET MVC从http://www.codeproject.com/KB/aspnet/streamingblobhttp.aspx
下载和上载来自SQL Server的图像它显示了一种使用如下命令的方法:
UPDATE <table> SET <field>.WRITE(@data, null, null) WHERE ...
这允许将数据块写入列中,而无需读取整个文件。
答案 1 :(得分:1)
使用varbinary(MAX)
列可获得最佳效果。虽然您可以流式传输 out 数据库,但无法在中流式传输。