您的位置:首页 > 数据库

c# 读取Northwind数据库image字段

2009-03-13 00:00 411 查看
这里值得一提的是,web控件image不像winForm控件那样可以通过读取二进制流赋值给image属性来显示图像。可以通过变通的方法来实现,流行的做法是新建一个页面专门用来显示图像,这里代码直接用孟子E章前辈的(作了小修改,主要是剔除78个byte字节流来正常显示northwind数据库的图片):
ReadImage.aspx.cs
using System; 
using System.Collections; 
using System.Configuration; 
using System.Data; 
using System.Linq; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.HtmlControls; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Xml.Linq; 
using System.Data.SqlClient; 

namespace WebApplication2 
{ 
public partial class ReadImage : System.Web.UI.Page 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 
string strImageID = Request.QueryString["id"]; 
SqlConnection myConnection = new SqlConnection("Data Source=.;Initial Catalog=northwind;User Id=sa;Password=123456;"); 
SqlCommand myCommand = new SqlCommand("Select Picture from Categories Where CategoryID=" 
+ strImageID, myConnection); 

try 
{ 
myConnection.Open(); 
SqlDataReader myDataReader; 
myDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection); 
if (myDataReader.Read()) 
{ 
Response.Clear(); 

Response.ContentType = "image/jpeg"; 
byte[] b = (byte[])myDataReader["Picture"]; 
//下面的方法就是用来让图片可以正常显示 
byte[] temp=new byte [b.Length -78]; 
Array.Copy(b, 78, temp, 0, b.Length - 78); 
Response.BinaryWrite(temp); 
} 
myConnection.Close(); 
} 
catch (SqlException SQLexc) 
{ 
Response.Write(SQLexc.ToString ()); 
} 
Response.End(); 

} 
} 
}

在源页面如Default.aspx.cs可以通过下面方法调用
protected void Page_Load(object sender, EventArgs e) 
{ 
if(!IsPostBack ) 
Image1.ImageUrl = FormatURL("1"); 

} 
protected string FormatURL(string strArgument) 
{ 
return "ReadImage.aspx?id=" + strArgument; 
}

如果不想新建一个页面来承载图像,也可以使用下面的方法:(注意:下面的类是自定义的,大家看得懂这个方法就可以了)
using System; 
using System.Collections; 
using System.Configuration; 
using System.Data; 
using System.Linq; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.HtmlControls; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Xml.Linq; 
using System.Data.SqlClient; 

namespace WebApplication2 
{ 
public partial class ReadImage : System.Web.UI.Page 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 
string strImageID = Request.QueryString["id"]; 
SqlConnection myConnection = new SqlConnection("Data Source=.;Initial Catalog=northwind;User Id=sa;Password=123456;"); 
SqlCommand myCommand = new SqlCommand("Select Picture from Categories Where CategoryID=" 
+ strImageID, myConnection); 

try 
{ 
myConnection.Open(); 
SqlDataReader myDataReader; 
myDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection); 
if (myDataReader.Read()) 
{ 
Response.Clear(); 

Response.ContentType = "image/jpeg"; 
byte[] b = (byte[])myDataReader["Picture"]; 
byte[] temp=new byte [b.Length -78]; 
Array.Copy(b, 78, temp, 0, b.Length - 78); 
Response.BinaryWrite(temp); 
} 
myConnection.Close(); 
} 
catch (SqlException SQLexc) 
{ 
Response.Write(SQLexc.ToString ()); 
} 
Response.End(); 

} 
} 
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: