📄 关于存取sql server image数据类型.txt
字号:
长话短说,最近项目中需要用到使用.Net 开发存取SQL Server数据库中的Image数据,通过搜索,直到大概的做法:(开发环境VS2005+SQL Server 2005,WinForm)
保存过程
1、将picturebox中的Image存储到一个MemoryStream中
2、将这个MemorySteam转换为byte数组,按照网上常见的方法ms.read(byte[],0,lenth)
3、byte数组于是可用于存储过程作为参数写入相应字段。
按照网上的介绍,读取图片:
1、取得Image字段为Byte数组
2、使用这个byte数组实例化一个MemoryStream
3、让Picturebox的Image从数据流MemoryStream中读取获得图片
但是
每当读取数据流获得图片时,都报参数错误,经过查阅,要么数据内容不是正确的图片格式,要么是数据为空。经过跟踪,发现数据并不为空,那么这个方法有问题?
睡了一觉起来,怀疑是图片转换成byte数组的时候并不是正确的图片数据,同时也发现数据流ms有另外一个转换byte数组的方法,ToArray,于是取代.Read方法来获取byte数组,保存入数据库,再用同样方法取得,居然没报错了,顺利通过。
到底ms.Read读取出来成为byte数组是否改变了数据本身,改变了的话是寻着如何的规则改变的,现在不得而知,经过跟踪发现,原来使用ms.read方法读取数据,数组中所有成员都是0,而使用toArray则获得了有值的图片数据,真是奇怪。
大胆猜想,可能ms.read不是很智能,需要把ms 的当前流的位置设置到开头,0处,然后read 才能读到数据?
公开承认这个时候我比较偷懒,不想去验证如果把读取位移动到0的时候能否读到有值的数据,有同行愿意Try的回帖时告诉我一下。
好,到此为止,继续追进度。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -