iPhone到MS SQL图像数据types转换问题

好的,我们走吧!

我目前正在开发一个iPhone应用程序,将作为安全检查系统在教堂的事件。 主要目标是能够为参与者search预先存在的MS SQL数据库,然后将其保存到iPhone / iPod Touch / iPad上的列表中。 很简单。 MS SQL数据库中的一个字段是Image数据types,其function是以二进制forms存储参与者的图像。 我目前不允许切换到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是什么。 这是在这里讨论的类别, 如何在iphone-sdk上执行base64编码?

在类别中,它返回一个string作为NSASCIIStringEncoding。 然后使用POST将该string发送到Visual Basic Web服务。

假设我已经build立并打开了我的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中,这样做会使图像显示在浏览器中。 相反,它以base64forms显示string。 将该string复制并粘贴到networking上的base64转换器中,然后运行。 所以在iPhone上的编码确实编码到base64。

这是问题。 我甚至需要编码到base64保存到图像数据types,或者我应该重点学习如何将NSData编码到不同的二进制string?

我想清楚了,并且将会把我的答案留给任何一个发现这个问题的人。 祝你在编程中好运

它实际上比我想象的要简单得多。 只需使用System.Convert传入InsertCommand中的字节即可。

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

从本质上讲,我得到的编码string的字节,但从来没有解码进一步下行。 所以我在插入表之前使用Convert来停止双重编码。