图片保存到数据库的方法:

public void imgToDB(string sql)
        {   //参数sql中要求保存的imge变量名称为@images
            //调用方法如:imgToDB("update UserPhoto set Photo=@images where UserNo='" + temp + "'");
            FileStream fs = File.OpenRead(t_photo.Text);
            byte[] imageb = new byte[fs.Length];
            fs.Read(imageb, 0, imageb.Length);
            fs.Close();
            SqlCommand com3 = new SqlCommand (sql,con);
            com3.Parameters.Add("@images", SqlDbType.Image).Value = imageb;
            if (com3.Connection.State == ConnectionState.Closed)
                com3.Connection.Open();
            try
            {
                com3.ExecuteNonQuery();
            }
            catch
            { }
            finally
            { com3.Connection.Close(); }
        }

数据库中读出图片并显示在picturebox中:

方法一:
private void ShowImage(string sql)
     {
     //调用方法如:ShowImage("select Photo from UserPhoto where UserNo='" + userno +"'");
     SqlCommand cmd = new SqlCommand(sql, conn);
     conn.Open();
     byte[] b= (byte[])cmd.ExecuteScalar();
     if (b.Length 〉 0)
     {
     MemoryStream stream = new MemoryStream(b, true);
     stream.Write(b, 0, b.Length);
      pictureBox1.Image = new Bitmap(stream);
      stream.Close();
     }
     conn.Close();
     }

方法二:当在dg中选中某行时:
private void dg_MouseUp(object sender, MouseEventArgs e)
        {
            //整行选择
            if (e.Button == System.Windows.Forms.MouseButtons.Left)
            {//用户编号,姓名,性别,身份证号,籍贯,学院,系所,校区,部门,电话,照片
                  //显示相片
                object imgobj=dg[10, dg.CurrentRow.Index].Value;
                if (imgobj != null && !Convert.IsDBNull(imgobj))
                {
                    byte[] imgb = (byte[])imgobj;
                    MemoryStream memStream = new MemoryStream(imgb);
                    try
                    {
                        Bitmap myimge = new Bitmap(memStream);
                        this.pictureBox1.Image = myimge;
                    }
                    catch
                    {
                        DB.msgbox("从数据库读取相片失败!");
                    }
                }
                else
                    pictureBox1.Image = null;
            }

使用C#进行图片的数据库存取

本文总结如何在.Net WinForm和.Net WebForm(asp.net)中将图片存入SQL Server中并读取显示的方法 。 
1.使用asp.net将图片上传并存入SQL Server中,然后从SQL Server中读取并显示出来: 
1)上传并存入SQL Server

数据库结构 
create table test 

id identity(1,1), 
FImage image 

相关的存储过程 
Create proc UpdateImage 

@UpdateImage Image 

As 
Insert Into test(FImage) values(@UpdateImage) 
GO 
在UpPhoto.aspx文件中添加如下: 
<input id="UpPhoto" name="UpPhoto" runat="server" type="file"> 
<asp:Button id="btnAdd" name="btnAdd" runat="server" Text="上传"></asp:Button> 
然后在后置代码文件UpPhoto.aspx.cs添加btnAdd按钮的单击事件处理代码: 
private void btnAdd_Click(object sender, System.EventArgs e) 

//获得图象并把图象转换为byte[] 
HttpPostedFile upPhoto=UpPhoto.PostedFile; 
int upPhotoLength=upPhoto.ContentLength; 
byte[] PhotoArray=new Byte[upPhotoLength]; 
Stream PhotoStream=upPhoto.InputStream; 
PhotoStream.Read(PhotoArray,0,upPhotoLength); 
//连接数据库 
SqlConnection conn=new SqlConnection(); 
conn.ConnectionString="Data Source=localhost;Database=test;User Id=sa;Pwd=sa"; 
SqlCommand cmd=new SqlCommand("UpdateImage",conn); 
cmd.CommandType=CommandType.StoredProcedure; 
cmd.Parameters.Add("@UpdateImage",SqlDbType.Image); 
cmd.Parameters["@UpdateImage"].Value=PhotoArray; 
//如果你希望不使用存储过程来添加图片把上面四句代码改为: 
//string strSql="Insert into test(FImage) values(@FImage)"; 
//SqlCommand cmd=new SqlCommand(strSql,conn); 
//cmd.Parameters.Add("@FImage",SqlDbType.Image); 
//cmd.Parameters["@FImage"].Value=PhotoArray; 
conn.Open(); 
cmd.ExecuteNonQuery(); 
conn.Close(); 

2)从SQL Server中读取并显示出来 
在需要显示图片的地方添加如下代码: 
<asp:image id="imgPhoto" runat="server" ImageUrl="ShowPhoto.aspx"></asp:image> 
ShowPhoto.aspx主体代码: 
private void Page_Load(object sender, System.EventArgs e) 

if(!Page.IsPostBack) 

SqlConnection conn=new SqlConnection() 
conn.ConnectionString="Data Source=localhost;Database=test;User Id=sa;Pwd=sa"; 
string strSql="select * from test where id=2";//这里假设获取id为2的图片 
SqlCommand cmd=new SqlCommand(strSql,conn); 
conn.Open(); 
SqlDataReader reader=cmd.ExecuteReader(); 
reader.Read(); 
Response.ContentType="application/octet-stream"; 
Response.BinaryWrite((Byte[])reader["FImage"]); 
Response.End(); 
reader.Close(); 

}

2.在WinForm中将图片存入SQL Server,并从SQL Server中读取并显示在picturebox中 
1),存入SQL Server 
数据库结构和使用的存储过过程,同上面的一样 
首先,在窗体中加一个OpenFileDialog控件,命名为ofdSelectPic ; 
然后,在窗体上添加一个打开文件按钮,添加如下单击事件代码: 
Stream ms; 
byte[] picbyte; 
//ofdSelectPic.ShowDialog(); 
if (ofdSelectPic.ShowDialog()==DialogResult.OK) 

if ((ms=ofdSelectPic.OpenFile())!=null) 

//MessageBox.Show("ok"); 
picbyte=new byte[ms.Length]; 
ms.Position=0; 
ms.Read(picbyte,0,Convert.ToInt32(ms.Length)); 
//MessageBox.Show("读取完毕!"); 
//连接数据库 
SqlConnection conn=new SqlConnection(); 
conn.ConnectionString="Data Source=localhost;Database=test;User Id=sa;Pwd=sa"; 
SqlCommand cmd=new SqlCommand("UpdateImage",conn); 
cmd.CommandType=CommandType.StoredProcedure; 
cmd.Parameters.Add("@UpdateImage",SqlDbType.Image); 
cmd.Parameters["@UpdateImage"].Value=picbyte; 
conn.Open(); 
cmd.ExecuteNonQuery(); 
conn.Close(); 
ms.Close(); 


2)读取并显示在picturebox中 
首先,添加一个picturebox,名为ptbShow 
然后,添加一个按钮,添加如下响应事件: 
SqlConnection conn=new SqlConnection(); 
conn.ConnectionString="Data Source=localhost;Database=test;User Id=sa;Pwd=sa"; 
string strSql="select FImage from test where id=1"; 
SqlCommand cmd=new SqlCommand(strSql,conn); 
conn.Open(); 
SqlDataReader reader=cmd.ExecuteReader(); 
reader.Read(); 
MemoryStream ms=new MemoryStream((byte[])reader["FImage"]);

Image image=Image.FromStream(ms,true); 
reader.Close(); 
conn.Close(); 
ptbShow.Image=image;

C# 图片保存到数据库和从数据库读取图片并显示的更多相关文章

  1. 【WPF学习笔记】之如何把数据库里的值读取出来然后显示在页面上:动画系列之(六)(评论处有学习资料及源码)

    (应博友们的需要,在文章评论处有源码链接地址,以及WPF学习资料.工具等,希望对大家有所帮助) ...... 承接系列五 上一节讲了,已经把数据保存到数据库并且删除数据,本讲是把已经存在的数据从数据库 ...

  2. VS.C#如何向数据数据库中存入和读取图片的

    写入图片部分代码:假设图片为 test.gifbyte [] bytes = File.ReadAllBytes(@"c:\test.gif");SqlConnection con ...

  3. MATLAB实例:将批量的图片保存为.mat文件

    MATLAB实例:将批量的图片保存为.mat文件 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 一.彩色图片 图片数据:horse.rar 1. MA ...

  4. 图片和base64编码字符串 互相转换,图片和byte数组互相转换

    图片和base64编码字符串 互相转换 import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import java.io.*; ...

  5. 图片的另一种展现—将后台图片编码直接展现为图片

    1.应用场景            开发过程中,遇到这样的需求:需要将服务器上的图片展现在页面上,但是图片所在服务器不是对外的,图片所在服务器与应用服务器也不在同一台机器上,这时候就需要在开发中先将图 ...

  6. C#(WinForm)上传图片保存到数据库和从数据库读取图片显示到窗体

    //浏览图片 private void btnUp_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialo ...

  7. 图片保存到数据库以及C#读取图片

    图片保存到数据库,如果是sqlserver就是Image类型,如果保存到Oracle就是blob类型,在c#中相对应的就是byte[]类型,同时只需要对读出的数据强制转换就行(byte[])objec ...

  8. Scrapy Item用法示例(保存item到MySQL数据库,MongoDB数据库,使用官方组件下载图片)

    需要学习的地方: 保存item到MySQL数据库,MongoDB数据库,下载图片 1.爬虫文件images.py # -*- coding: utf-8 -*- from scrapy import ...

  9. PHP把图片保存到数据库,将图片本身保存在数据库,而非保存路径

    备注 百度开发者的云代码空间为了保证高可用,不允许用户将图片保存到代码空间中,使用CDN或者对象存储不仅收费而且使用比较复杂,于是考虑能否将img存储在数据库中,虽然很多人说会造成性能问题,权当一试 ...

随机推荐

  1. 【转】cocos2d-x与ios内存管理分析(在游戏中减少内存压力)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=281 注:自己以前也写过coco ...

  2. jdbc:oracle:thin:@192.168.3.98:1521:orcl(详解)

    整理自互联网 一. jdbc:oracle:thin:@192.168.3.98:1521:orcljdbc:表示采用jdbc方式连接数据库oracle:表示连接的是oracle数据库thin:表示连 ...

  3. 《Python 学习手册4th》 第十八章 参数

    ''' 时间: 9月5日 - 9月30日 要求: 1. 书本内容总结归纳,整理在博客园笔记上传 2. 完成所有课后习题 注:“#” 后加的是备注内容 (每天看42页内容,可以保证月底看完此书) “重点 ...

  4. js刷新页面方法

    1,reload 方法,该方法强迫浏览器刷新当前页面.语法:location.reload([bForceGet])   参数: bForceGet, 可选参数, 默认为 false,从客户端缓存里取 ...

  5. 【九度OJ】题目1096-二分查找

    题目1069:查找学生信息 这篇文章中提到的问题主要是由于调试平台Visual Studio和测试平台Online Judge的一些小差异,造成在Visual Studio中调试通过的代码,在输入OJ ...

  6. 50道经典的JAVA编程题(汇总)

    这是一次不可思议的编程历程.从2013年的最后一天开始做这份题,中间连续好几天的考试,包括java考试(今天考试的JAVA编程题),直到今天完成了.挺有成就感的...废话不多说了,来电实质性的吧. 全 ...

  7. Components of the Impala Server

    Components of the Impala Server The Impala server is a distributed, massively parallel processing (M ...

  8. <Chapter 2>2-2.开发应用(developing the Application)

    一个App Engine应用对网络请求做出响应.它是通过调用请求处理器(quest handlers)来实现的,接受请求参数并返回响应的程序.对于来自请求URL上的请求,App Engine通过一个配 ...

  9. 为Android游戏接入第三方登录功能

    1. “游戏客户端”调用“SDK客户端”的登录功能向“SDK服务端”进行身份认证 2. 验证通过后,“游戏客户端”可得到用户信息,根据游戏逻辑可将用户信息传给“游戏服务器”进行验证 3. “游戏服务器 ...

  10. HYSBZ 2243-染色 (树链剖分)

    1A!!! 哈哈哈哈哈没看题解 没套模板哈哈哈哈 太感动了!! 如果只是线段树的话这道题倒是不难,只要记录左右边界就好了,类似很久以前做的hotel的题 但是树上相邻的段会有连续的 树上top[x]和 ...