0

我在将数据从 iPad 应用程序保存到 SQL Server 时遇到问题。我认为这主要与数据类型有关。从数据库开始,我的图像字段为 SQL Server 数据类型:图像。我在 .NET 中寻找了一个等效的数据类型,我从这个链接中发现:http: //msdn.microsoft.com/en-us/library/cc716729.aspx最好的选择是字节数组:Byte[]

在我在 .NET 中使用的实体/类中,我有以下内容: public class MyClass { public Byte [] Image { get; 放; 我用来传递此数据的参数如下所示:

SqlParameter param_image = cmd.Parameters.Add("IMAGE", SqlDbType.Image, item.Image.Length);
param_image.Value = System.Convert.FromBase64String(item.Image);
param_image.Direction = ParameterDirection.Input;

但是,我从有关尝试从字符串转换为字节数组的参数中收到错误消息。有人做过吗?

4

2 回答 2

1

两个备注:

  • item.Image 是 Byte[],而不是 FromBase64String 所期望的 String(可能这是您的错误?)。尝试:

    param_image.Value = item.Image

  • 您应该使用 varbinary(max) 而不是 IMAGE 数据类型:不推荐使用 IMAGE 数据类型(支持但将来会删除)

于 2012-11-01T23:44:28.567 回答
0

不要使用 IMAGE,是一种已弃用的数据类型。使用 VARBIANRY(MAX)。将数据存储为 base64 编码是有问题的,因为它会浪费空间。另一方面,它确实在提供图像时节省了处理,但处理可以推送到 HTTP 服务器并因此横向扩展,而空间损失无法缓解。我倾向于存储未连接的二进制图像流。有关使用通过 HTTP 向 SQL Server 上传和下载媒体的流语义的完整示例,请参阅通过 ASP.NET MVC 从 SQL Server 下载和上传图像. 适应 iOS 交互很容易,而且这个概念可以适应做更智能的事情来实现端到端流式传输(即不是 HTTP while-file post,而是从客户端发送/接收的单个片段)。在处理大型媒体类型内容(图像、视频、文档)时,使用流语义的重要性怎么强调都不为过。

于 2012-11-02T08:42:20.067 回答