首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL二进制转换与.Net二进制转换

SQL二进制转换与.Net二进制转换
EN

Stack Overflow用户
提问于 2011-06-15 01:28:38
回答 1查看 1.7K关注 0票数 1

我在MS SQL服务器中有一个表,如下所示:

代码语言:javascript
复制
CREATE TABLE Setting
(
   ID int NOT NULL,
   Value varbinary(MAX) NOT NULL
)

Value列中的信息可以格式化为字符串、布尔值、整数、小数等。例如:

代码语言:javascript
复制
INSERT INTO Setting (Value) VALUES (CONVERT(VARBINARY(MAX), 5.4))

要选择数据,我可以在将数据返回到.Net之前转换值,但我更喜欢select过程返回二进制数据,然后在.Net中执行正确的类型转换。这样,我就可以同时选择以不同格式存储的多个设置。

我不明白的是如何将返回的二进制数据转换为正确的类型(特别是对于整数和小数)。数据库返回字节数组(byte[])中的二进制数据,但似乎不太支持从字节数组到整数或小数的转换。

我的第一个倾向是使用System.Convert,但它不支持字节数组。

我的第二个解决方案是使用System.IO.BinaryWriter和System.IO.BinaryReader。这个方法给了我这样的错误:“无法在流的末尾读取”。

示例:

代码语言:javascript
复制
cmd.CommandText = "SELECT CONVERT(VARBINARY(MAX), 2.3)";
byte[] bytes = (byte[])ExecuteSelect(cmd).Rows[0][0];
System.IO.MemoryStream ms = new System.IO.MemoryStream();
System.IO.BinaryWriter br = new System.IO.BinaryWriter(ms);
br.Write(bytes);
System.IO.BinaryReader br2 = new System.IO.BinaryReader(ms);
decimal d = br2.ReadDecimal();

我的第三次尝试是使用System.Runtime.Serialization.Formatters.Binary.BinaryFormatter,,但返回了错误消息:“在解析完成之前遇到了流的结束”。

示例:

代码语言:javascript
复制
cmd.CommandText = "SELECT CONVERT(VARBINARY(MAX), 2.3)";
byte[] bytes = (byte[])ExecuteSelect(cmd).Rows[0][0];
System.IO.MemoryStream ms = new System.IO.MemoryStream();
ms.Write(bytes, 0, bytes.Length);
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
decimal d = (decimal)bf.Deserialize(ms);

我当前的解决方案是将值的类型传递到存储过程中,并使用case语句将值转换为字符串。

我首选的解决方案是,如果我可以在不连接到数据库的情况下从.Net访问MS的Convert函数。

我不想使用自己开发的函数来进行转换。我需要一个可靠的解决方案。

我的环境是.Net 2008、C#或VB

任何想法都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2011-06-15 01:34:42

您的第一次尝试是关闭,有BitConverter.ToDouble或您想要转换成的任何东西。

你的第二次尝试也很接近,你只是在读它之前没有倒回它(这是多么疯狂的一种绕过的方式…)。

至于你的第三次尝试,你还没有吸取关于I/O的教训。

编辑:我不相信你会从那个东西中得到一个小数点。你应该仔细检查你的类型...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6347561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档