【问题标题】:iPhone to MS SQL Image Data Type Conversion QuestioniPhone 到 MS SQL 图像数据类型转换问题
【发布时间】:2011-03-02 21:20:08
【问题描述】:

好的,我们开始吧!

我目前正在开发一款 iPhone 应用程序,该应用程序将用作教堂活动的安全登记系统。主要目标是能够在预先存在的 MS SQL 数据库中搜索参与者,然后将它们保存到 iPhone/iPod Touch/iPad 上的列表中。很容易。 MS SQL 数据库中的字段之一是图像数据类型,其功能是将参与者的图像以二进制形式存储。我目前不允许切换到 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 才能保存到图像数据类型中,还是应该专注于学习如何将 NSData 编码为不同的二进制字符串?

【问题讨论】:

    标签: asp.net objective-c visual-studio ios base64


    【解决方案1】:

    我想通了,并将我的答案留给任何偶然发现的人。祝你在编程中好运。

    实际上比我想象的要简单得多。只需使用 System.Convert 在 InsertCommand 上传递字节。

       sqlDataAdapter.InsertCommand = (commandString, sqlConnection)
       sqlDataAdapter.InsertCommand.Parameters.Add(@"image", SqlDbType.Image, image.length).Value = System.Convert.FromBase64String(image)
       sqlDataAdapter.ExecuteNonQuery()
    

    本质上,我得到了编码字符串的字节,但从未进一步解码它。因此,我在将其插入表之前使用 Convert 停止了双重编码。

    【讨论】:

      猜你喜欢
      • 2023-03-13
      • 2019-03-10
      • 1970-01-01
      • 2020-09-25
      • 2017-04-23
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多