我无法将数据从iPad应用程序保存到SQL服务器。我认为它主要与数据类型有关。从数据库开始,我将我的Image字段作为SQL Server数据类型:image。我在.NET中查找了一个等效的数据类型,我在这个linkk中找到: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;
但是,我从尝试从字符串转换为字节数组的参数中收到错误。有没有人这样做过?
答案 0 :(得分:1)
两个评论:
item.Image是Byte [],而不是预期的String FromBase64String(这可能是你的错误?)。尝试:
param_image.Value = item.Image
您应该使用varbinary(max)而不是IMAGE数据类型:IMAGE数据类型 不推荐使用(支持但将来会删除)
答案 1 :(得分:0)
不使用IMAGE,是不推荐使用的数据类型。使用VARBIANRY(MAX)。将数据存储为base64编码是有问题的,因为它浪费空间。另一方面,它确实在服务图像时节省了处理,但是该处理可以被推送到HTTP服务器(S)并因此被缩小,而空间损失不能被缓解。我赞成存储未连接的二进制图像流。有关使用通过HTTP上传和下载SQL Server的流媒体语言的完整示例,请参阅Download and Upload Images from SQL Server via ASP.NET MVC。使其适应iOS交互很容易,并且该概念可以适用于甚至更聪明的事情来实现端到端流(即,不是HTTP文件发布,而是从客户端发送/接收的单个片段)。在处理大型媒体类型内容(图像,视频,文档)时,无法强调使用流语义的重要性。