c#把图片以二进制的形式写入ACCESS数据库

今天把文件写入到数据库中的时候出现了问题,问了很多人和查了很多资料,结果都没有找到解决的办法,后面经过不断的尝试,终于解决了这个问题。下面把重要的部分跟大家分享下。

有的时候需要把图片存在数据库中以达到用户看不到图片的效果,在这里主要讲解以二进制的形式存储方法。
这里的图片有两种,一种是在本地,一种是通过GDI画好的。
在本地的图片写入数据库中的时候
FileStream fs = new FileStream(dt.FileName, FileMode.Open, FileAccess.ReadWrite);
这儿是把本地图片转换为内存流,FileName是文件的全路径名,dt是打开文件对话框。后面的参数不用管,照写就可以了。
byte[] ms = new byte[fs.Length];
//这儿是神明一个字节数组,数组的长度是long类型的
fs.Read(ms, 0, ms.Length); 
这儿是吧图片内存流写到字节数组中。
好了 现在已经得到了图片的二进制数组,下面就是把数组中的数据写入到数据库中。
创建数据库,创建一个数据表,表中有一个字段pic,注意了,这儿pic字段的类型一定要是OLE对象类型,要不然存储不了。
然后就是写入数据库字串,至于连接就不讲在这儿,string str = "insert into database values(@pic)"。
这儿是重点了,这儿不能写成"insert into database values('"+str+"')",一定要写成上面那样,
然后加上com(OledCommand类型).arameters.AddWithValue("@pic", str);
然后刷新就可以了。这样写入到数据库中就完成了。
如果是内存流的形式,那么就不能这样写了,
System.IO.MemoryStream io;
这个时候不能 byte[] ms = new byte[fs.Length];fs.Read(ms, 0, ms.Length); 如果这样写了之后读取出来的图片就会报错,错误类型为类型不符。
要改成 byte[] ms = io.ToArray();
后面就是一样的了。 
好了 重要的部分就这些,其他的没有什么了。 

 

你可能感兴趣的:(c#把图片以二进制的形式写入ACCESS数据库)