C# byte[]类型存储 到sqlserver的问题

lifeixie 2006-08-10 04:25:21
我byte[]的数据是终端传给我的,因为有些可显示字符,所以不想用string 存储

byte[] 里有 384 个字节,不够的添0补上了
SqlServer中我设置的 存储类型是 binary 长度也是 384。

可是 我 把 byte[]中的字节存储完毕后,只把第一个字节存储上了 剩下的全是 0了。

也就是说 存完毕查看内容的时候就第一个字节正确
0x23000000000000000000000000000000........
只有0x23正确

我数组里的值没有问题!这个是肯定的
代码如下

arParams[1] = new SqlParameter("@ReCommand", SqlDbType.VarBinary,384)//Bnary也不行
arParams[1].Value = BaseReCommand.ReCommand;

请问具体该怎么办?需要设置什么别的东西吗?

...全文
1353 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lifeixie 2006-08-10
  • 打赏
  • 举报
回复
我知道了,在写存储过程的时候,没定义参数的长度
@ReCommand binary(384), 写个 384就好了,谢谢大家,自己的问题自己解决了,呵呵
lifeixie 2006-08-10
  • 打赏
  • 举报
回复
binary存储的数据范围是+/-38位的整数。
在存的时候,传入整数,但存在库里的格式是二进制。读时,你可以根据自己需要做转换。

而你把byte[]存到binary里是错误的,byte[]是什么类型,是个数组,而不是二进制数字。你是把数组往值里写。所以是错误的,byte[]数据写到数据库,只能写到image里。

不对,不管格式是几进制的,他都是整数,所谓 16 , 10 , 2 进制 都是整数,只是表示方法不同而已,互相运算是一点问题没有的!数组是不假,但都是由 8位无符号数组成的!
我看了binary的定义,是专门存储整数字节的。存数组是正确的,而image 容量太大,却不太妥当!跟本不需要那么大!
kingtoo008 2006-08-10
  • 打赏
  • 举报
回复
顶起...
------------------------------------------------------------------------------------
100M.Net空间+50M企业邮局=60元/年
100M.Net空间+国际顶级域名=100元/年
国际顶级域名.com.net.cn=50元/年
本站申请域名可绑定免费10M Asp.Net空间
1000M.Net空间 + 100M MsSql数据库 + 1000M企业邮局 + 顶级域名=600元/年
数据库 企业邮局 网站推广 整机租用 美国空间 网站建设 均有售
还有很多优惠套餐提供给各个用户层.
有意者可联系电话:021-64802212 传真:021-64802212
咨询信箱:info@kingtoo.com 咨询OICQ:68311305,379620139 81778640

lovvver 2006-08-10
  • 打赏
  • 举报
回复
binary存储的数据范围是+/-38位的整数。
在存的时候,传入整数,但存在库里的格式是二进制。读时,你可以根据自己需要做转换。

而你把byte[]存到binary里是错误的,byte[]是什么类型,是个数组,而不是二进制数字。你是把数组往值里写。所以是错误的,byte[]数据写到数据库,只能写到image里。


-----------------------
www.notsoft.cn
lifeixie 2006-08-10
  • 打赏
  • 举报
回复
image没实验过,看你这么说应该是行。但 按道理来说,binary 是可以的啊。为什么不好用。不明白
三省Ta叔 2006-08-10
  • 打赏
  • 举报
回复
你用 image 类型的存储看
lifeixie 2006-08-10
  • 打赏
  • 举报
回复
问题是我只存储了第一个字符!其他的都没存
用Binary 存储 0x23000000000....
用VarBinary 存储 0x23
都只存储了一个字节
lifeixie 2006-08-10
  • 打赏
  • 举报
回复
byte[] 里有 384 个字节,不够的添0补上了
不够 384 的我添0补上了我是说。这里应该没错。

另外把byte[]编码为string存储到数据库,读数据时再编码会byte[]不是很好?

我有不可显示字符,如果弄成string 可能会丢字符,而且 在转换回来的话,可能会错。效率也低
Knight94 2006-08-10
  • 打赏
  • 举报
回复
change
arParams[1] = new SqlParameter("@ReCommand", SqlDbType.VarBinary,384)//Bnary也不行
arParams[1].Value = BaseReCommand.ReCommand;

with
arParams[1] = new SqlParameter("@ReCommand", BaseReCommand.ReCommand );
lovvver 2006-08-10
  • 打赏
  • 举报
回复
不是binary,应该是image,要存到image字段里去。
showlie 2006-08-10
  • 打赏
  • 举报
回复
byte[] 里有 384 个字节,不够的添0补上了
SqlServer中我设置的 存储类型是 binary 长度也是 384。
---------------
384个binary是384个字节吗?----应该是这里错了
改成varchar 384试试

另外把byte[]编码为string存储到数据库,读数据时再编码会byte[]不是很好?
真相重于对错 2006-08-10
  • 打赏
  • 举报
回复
code ???

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧