【发布时间】:2014-03-01 06:35:16
【问题描述】:
我正在使用代码
cmd.Parameters.Add("@Array", SqlDbType.VarBinary).Value = Array;
SqlDbType.VarBinary 描述声明它最多只能处理数组的 8 K 字节。我有一个代表图像的字节数组,可以达到 10k 字节。
如何使用 C# 将其存储在 varbinary(max) 列中?
创建数组没有问题。尝试执行查询时,我被困在这个 8k 限制。
编辑:让我澄清一下,在我的机器上,当我在本地运行 asp.net 应用程序时,甚至高达 15k 字节的图片也会存储在数据库的 varbinary(MAX) 列中,但是一旦我部署它,图片就不会被存储。然后我采取了大幅调整图像大小以确保它们的大小小于 8K,现在图像可以毫无问题地存储。
【问题讨论】:
-
为什么不把图片存到硬盘里,把路径存到db里呢?
-
SQL Server 的哪个版本?发生了一些变化。 (此外,如果您遇到错误,请确保包含确切的消息 - 这也将使其他人更容易找到问题,并且可能会找到重复项。)
-
即使Modifying Large-Value (max) Data in ADO.NET 似乎对“如何”为 VARBINARY(MAX) 列执行此操作保持沉默..
-
但是Working with Binary Large Objects (BLOBs) Using SQL Server and ADO.NET(它创建了一个参数对象首先,然后添加它,没有提到8k大小限制)..你确定 您最初提供的代码不起作用?如果没有,请发布错误/异常。
-
我无法存储路径,因为我将从客户端机器接收图像,然后将其保存在服务器机器上。其次,当我使用大于 8 kb 的图像时,图像不会存储在我的数据库中。 (我使用 WCF 通过 silverlight 将图像传输到我的服务器,并且该过程完成没有任何问题)。
标签: c# sql sql-server varbinary