好的,我們開始吧!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編碼爲不同的二進制字符串?