好的,我们开始吧!iPhone到MS SQL图像数据类型转换问题
我目前正在开发一款iPhone应用程序,该应用程序可用作教堂事件的安全检查系统。主要目标是能够为参与者搜索预先存在的MS SQL数据库,然后将它们保存到iPhone/iPod Touch/iPad上的列表中。很简单。 MS SQL数据库中的一个字段是Image数据类型,其功能是以二进制形式存储参与者的图像。我目前不允许切换到varbinary(MAX)。
从iPhone,我使用:
UIImage *image = [UIImage imageNamed:@"nameOfImage.jpg"];
NSData *imageData = UIImageJPEGRepresentation(image,1.0);
NSString *imageString = (NSString *)[[[NSString alloc] init] base64StringFromData:(NSData *)imageData];
你可能会疑惑base64StringFromData是什么。这是这里讨论的一个类别,How do I do base64 encoding on iphone-sdk?
在类别中,它返回一个字符串作为NSASCIIStringEncoding。然后使用POST将该字符串发送到Visual Basic Web服务。
假设我已经建立并打开了我的SQL连接,并初始化了一个SQL数据适配器和命令。所以功能看起来类似于这样:
Public Function sendCommand(ByVal image As String) As String
Dim commandString As String
commandString = "insert into phoneApp(image) values(@image)"
Dim encoding As New System.Text.UTF8Encoding
sqlDataAdapter.InsertCommand = (commandString, sqlConnection)
sqlDataAdapter.InsertCommand.Parameters.Add(@"image", SqlDbType.Image, image.length).Value = encoding.GetBytes(image)
sqlDataAdapter.ExecuteNonQuery()
End Function
现在,最后,这就是发生了什么。在另一个函数中,我调用Response.BinaryWrite(SqlDataReader.Item(“image”))。在Internet Explorer中,这样做会使图像显示在浏览器中。相反,它以base64形式显示字符串。将该字符串复制并粘贴到网上的base64转换器中,并且可以正常工作。所以iPhone上的编码确实可以编码到base64。
这是问题。我是否甚至需要将base64编码保存到Image Data Type中,还是应该专注于学习如何将NSData编码为不同的二进制字符串?