2013-07-26 35 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)。谢谢。 –

相关问题