tokyo hot n0628,夏目友人帐漫画,大妗
在c#开发应用程序的过程中,图片一般会存放在文件系统中,当然图片也可以二进制的方式存放到数据库中,不过一般不建议存放在数据库中,因为图片占用的空间还是挺大的,特殊情况下可以考虑将图片存在数据。此文将介绍如何将图片存放在sqlserver数据库中,并从数据库中读取出图片信息。
在将图片存储到数据库之前,需要先设计数据库表,建议使用sqlserver的数据类型image类型存储数据,当然也有人使用二进制binary类型存储。
一、将图片写入数据库中的方法
在此方法中使用到filestream类,该类在此的作用是将图片读取到文件流中。具体实现方法如下:
public void writeimgtodb() { sqlconnection conn=new sqlconnection("server=.;database=pubs;trusted_connection=yes"); conn.open(); sqlcommand scmd = null; string path = application.startuppath + "//imgren"; //为获取文件的根目录 int j = 0; filestream fs=null; for (int i = 1; i <= 13; i++) //利用循环添加一次添加图片 { string sql = "insert into tb_image values(@a,@b)"; //利用参数实现图片添加 scmd = new sqlcommand(sql, scon); scmd.parameters.add("@a", sqldbtype.int); scmd.parameters["@a"].value = i; //记住该方法,将值存入参数内 byte[] bt = new byte[10240]; //初始化图片大小 //创建图片写入流 fs = new filestream(path + "//" + i + ".bmp", filemode.openorcreate, fileaccess.read); fs.read(bt, 0, bt.length); //读取图片的字节数 scmd.parameters.add("@b", sqldbtype.image, (int)fs.length); scmd.parameters["@b"].value = bt; //将图片的字节数存入参数内 j = scmd.executenonquery(); } if (j > 0) messagebox.show("将图片写入数据库成功!!!", "友好提示"); else messagebox.show("将图片写入数据库失败!!!", "友好提示"); fs.close(); //关闭释放流资源 }
二、将从数据库中读取图片到picturebox控件中(winform窗体控件)。
此方法使用了memorystream类即内存流对象,同时使用了image类,image类是.net framework内部提供的图片相关类。从sqlserver数据库中读取图片数据具体实现方法如下:
public void readdbimage() { sqlconnection conn=new sqlconnection("server=.;database=pubs;trusted_connection=yes"); conn.open(); sqlcommand scmd = null; string sql = "select i_image from tb_image where i_id=" +int.parse(textbox1.text.trim()) + ""; scmd = new sqlcommand(sql, scon); sqldatareader red = scmd.executereader(); if (red.read()) { //创建支持存储区的内存流 memorystream ms = new memorystream((byte[])red[0]); image img = image.fromstream(ms, true); //该方法: fromstream()为验证图像的流 this.picturebox1.image = img; } red.close(); //关闭资源 }
扩展阅读:、。
备注:原文转载自。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论