使用C#进行图片的数据库存取
2008-03-09 17:28
459 查看
使用C#进行图片的数据库存取 |
[align=left]本文总结如何在.Net WinForm和.Net WebForm(asp.net)中将图片存入SQL Server中并读取显示的方法 。 1.使用asp.net将图片上传并存入SQL Server中,然后从SQL Server中读取并显示出来: 1)上传并存入SQL Server [/align] [align=left]数据库结构 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;[/align] |
相关文章推荐
- 复习课程jdbc:使用配置文件properties进行连接数据库,数据库存取图片,批处理,时间戳,事物回滚等等
- 转 详解C#数据库存取图片三大方式
- 使用C#对数据库进行增删改查操作(三)
- ACCP学习旅程之-----使用C#开发数据库应用程序(第五章 用控件进行快速开发)
- 小谈c#数据库存取图片的三种方式
- C#操作数据库中存取图片文件
- 一起谈.NET技术,c#数据库存取图片的三种方式
- c#数据库存取图片的三种方式
- C#实现图片到数据库的存取
- 在cmd、C#中使用命令为PostgreSQL创建数据库、登录角色,并对数据库进行备份和恢复
- C#插入图片到数据库,并进行读取
- 使用存储过程(PL/SQL)向数据库中存取BLOB对象——图片
- (转)C#数据库存取图片
- 使用C#向Sql Sever中存取网络图片和本地图片(二进制流的形式)
- SQLite数据库的使用(图片在数据库中的存取)
- 使用原生ADO进行数据库存取。
- C#操作数据库中存取图片文件的方法
- 使用c#进行数据库的查看增加修改删除数据
- C# 程序中,不使用TNS File 中的服务名进行数据库连接
- C# 数据库使用SqlCommand进行增,删,改,查询操作