如何在按钮单击事件中从SQL Server数据库中检索图像

问题描述:

在我的应用程序中,我想在按钮单击事件时从SQL Server数据库中检索图像.该图像以System.byte []格式存储在数据库中.我想在按钮单击事件中检索该图像,但它显示System.byte []格式.
我们编写的代码如下:

In my application I want to retrieve image from SQL server database on button click event.The image is stored in database in System.byte[] format.I want to retrieve that image on button click event but it display System.byte[] format.
The code written by us is as follows:

foreach (DataRow row in datatable.Rows)
            {

                FirstName = datatable.Rows[i]["FirstName"].ToString();
                LastName = datatable.Rows[i]["LastName"].ToString();
                EmailId = datatable.Rows[i]["EmailId"].ToString();
                ClassName = datatable.Rows[i]["ClassName"].ToString();
                FacultyName = datatable.Rows[i]["FacultyName"].ToString();
                byte[] barrImg = (byte[])datatable.Rows[i]["Image"];
                //byteArrayToImage(barrImg);
                Response.Write("<table border='1' height=60 width=1000><tr><td>");
                Response.Write("<a href='DisplayStudInfo.aspx?AdminId=" + AdminId + "&EmailId=" + EmailId + "'><b><font color='blue'>" + FirstName + "" + LastName + "</font></b></a>");
                Response.Write("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
                Response.Write("<b><font size=4 color='black'>");
                Response.Write(EmailId);
                Response.Write("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
                Response.Write(ClassName);
                Response.Write("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
                Response.Write(FacultyName);
                Response.Write("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
                Response.BinaryWrite(barrImg);
                Response.Write("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
                Response.Write("</b></font>");
                Response.Write("</td></tr></table>");
                Response.Write("<br>");
                i++;
            }



请帮帮我.
谢谢.



Please Help me.
Thank You.

使用内存流实际读取字节数组:

use memory stream to actually read the byte array:

byte[] barrImg = (byte[])datatable.Rows[i]["Image"];
MemoryStream ms = new MemoryStream(barrImg);


请尝试以下代码.
Try as below code.
byte[] barrImg = (byte[])datatable.Rows[i]["Image"];
MemoryStream mStream = new MemoryStream(barrImg);
Image myImage = Image.FromStream(mStream);


byte[] barrImg = (byte[])datatable.Rows[i]["Image"];
MemoryStream objMemoryStream = new MemoryStream(barrImg);
objMemoryStream.Flush();
Image objImage = Image.FromStream(objMemoryStream);
objMemoryStream.Close();