DBAWebFormsVisual Studio 2005ADO.NET.NET 2.0SQL Server 2005C# 2.0中级开发Visual StudioSQL ServerSQLWindows.NETASP.NETC#
从数据库存储和显示图像






1.55/5 (7投票s)
2007年8月17日

29219

417
本文档描述了如何将图像直接添加到数据库以及如何查看从数据库存储的图像。
引言
实际上,将图像文件存储到数据库中并不是一个好的做法,但有时有必要这样做。 这里我提供一个将图像存储和显示到数据库的解决方案。
使用代码
这将帮助您将图像存储和显示到数据库 - 这里是 Sql Server 2005。
首先创建一个名为 AddEmployee.aspx 的页面,并向其中添加一个 repeater,如源代码文件所示。
主要思想是:我将图像文件直接以二进制格式存储到数据库中。 因此,在存储之前,首先将其转换为二进制格式。
SqlParameter prmFName = new SqlParameter("@_FName", txtFName.Text.Trim());
cmdAddEmp.Parameters.Add(prmFName);
SqlParameter prmLName = new SqlParameter("@_LName", txtLName.Text.Trim());
cmdAddEmp.Parameters.Add(prmLName);
int len = FIleUP.PostedFile.ContentLength;
byte[] img = new byte[len];
FIleUP.PostedFile.InputStream.Read(img, 0, len);
SqlParameter prmImg = new SqlParameter("@_Image", img);
cmdAddEmp.Parameters.Add(prmImg);
int Status = cmdAddEmp.ExecuteNonQuery();
现在在图像查看时
<td id="tdImage" runat="server">
<asp:Image ID="img" runat="server" AlternateText='<%# Eval("FirstName") %>' ImageUrl='<%# "~/displayimage.aspx?ID=" + DataBinder.Eval(Container.DataItem,"Id") %>' Width="50px" Height="50px"/>
</td>
在 DisplayImage.aspx 页面上
cmdAddEmp.CommandText = "GetImage";
cmdAddEmp.CommandType = CommandType.StoredProcedure;
SqlParameter prmId = new SqlParameter("@_Id", Convert.ToInt32(Request.QueryString["Id"].ToString()));
cmdAddEmp.Parameters.Add(prmId);
byte[] byteImg = (byte[])cmdAddEmp.ExecuteScalar();
Response.BinaryWrite(byteImg);
Response.BinaryWrite(byteImg) 写入图像的二进制内容并显示图像。