2013-07-26 38 views
0

使用c#代碼,我已將字節數組轉換爲字符串,然後使用Entity框架存儲到一個sql表中。沒有問題,直到這裏。Sql server management studio不允許編輯表的值

但是,如果我嘗試在MSSql Server Management Studio中使用'select'命令查看存儲在表內的值,它在該列中顯示空值。如果我查詢Len(MyColumn),那麼它顯示一個有效的長度。

爲什麼我無法看到存儲的值?

更新: 它顯示一個值,當我右鍵單擊表 - >編輯頂部200行。但是,只要我點擊那個單元格,價值就會消失。我使用SQL Server 2005的

+1

你的選擇命令是什麼? – gwin003

+1

什麼是數據類型,什麼是預期的結果? –

+0

該列的數據類型是什麼?它是varchar? – Dilshod

回答

4

我已經將我的字節數組爲字符串

如果你不喜歡的東西message= Encoding.UTF8.GetString(myByteArray)你可能有不可打印的字符。領先的\0可能會導致您的字符串不能打印。這是處理SQL數據庫中的二進制數據的錯誤方法。

來處理這個正確的方法是下列選項之一(按優先順序)

  1. Store中的數據爲varbinary不是nvarchar這可以讓您直接與EF存儲byte[]而不做任何轉換在所有。
  2. 編碼數據通過message= Convert.ToBase64String(myByteArray)myByteArray = Convert.FromBase64String(message)
  3. 正確
    1. 使用Base64編碼使用十六進制,SoapHexBinary使得它很容易去和從十六進制字符串。
+0

您是對的,我之前使用的是Encoding.UTF8.GetString(myByteArray)。謝謝。 –

相關問題