【ASP.NET】 GridView 显示图片

分为两种情况

1. 图片以链接形式存储在数据库中,表中某个字段存储图片的路径

2. 图片存储在数据库中(BLOB)
     在计算机中,BLOB是指二进制长对象。BLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库)

第一种:图片以链接形式存储在数据库中
解决方式比较简单, 用GridView的ImageFiled,把它和表的相应字段对应即可。
Abhijit Jana 的这篇文章说的比较清楚 http://www.codeproject.com/KB/aspnet/GridImage.aspx
设置ImageFiled的属性DataImageUrlFiled=(field name in Database)

ContractedBlock.gif ExpandedBlockStart.gif Code is very simple
public partial class _Default : System.Web.UI.Page 
{
SqlConnection conn 
= new SqlConnection();
protected void Page_Load(object sender, EventArgs e)
{
conn.ConnectionString 
= "Data Source=MySe;Integrated Security=True; database=test";
Load_GridData(); 
// call Load_GridData()
}

void Load_GridData()
{
conn.Open();  
//open the connection 
SqlDataAdapter Sqa = new SqlDataAdapter("select * from picture", conn);
DataSet ds
=new DataSet();
Sqa.Fill(ds);   
// Fill the dataset 
GridView1.DataSource = ds; // give data to gridview
GridView1.DataBind();
conn.Close();
}
}

 

第二种 图片存储在数据库中(BLOB)

这种情况比较复杂
可以先看一下这篇文章:How To Read and Write BLOB Data by Using ADO.NET with Visual C# .NET 

图片写入到数据库BLOB字段:
1. 读图片文件到流
    FileStream fs = new FileStream(@"C:\winnt\Gone Fishing.BMP", FileMode.OpenOrCreate, FileAccess.Read);
2. 从流读到byte数组。
    byte[] MyData= new byte[fs.Length];
    fs.Read(MyData, 0, System.Convert.ToInt32(fs.Length));
3. 直接赋给字段
    myRow["imgField"] = MyData;

ContractedBlock.gif ExpandedBlockStart.gif 写一个图片文件到数据库
{
SqlConnection con 
= new SqlConnection("Server=Darkover;uid=<username>;pwd=<strong password>;database=northwind");
SqlDataAdapter da 
= new SqlDataAdapter("Select * From MyImages", con);
SqlCommandBuilder MyCB 
= new SqlCommandBuilder(da);
DataSet ds 
= new DataSet("MyImages");

da.MissingSchemaAction 
= MissingSchemaAction.AddWithKey;
FileStream fs 
= new FileStream(@"C:\winnt\Gone Fishing.BMP", FileMode.OpenOrCreate, FileAccess.Read);
            
byte[] MyData= new byte[fs.Length];
fs.Read(MyData, 
0, System.Convert.ToInt32(fs.Length));
            
fs.Close();
            
da.Fill(ds,
"MyImages");
                
DataRow myRow;
myRow
=ds.Tables["MyImages"].NewRow();

myRow[
"Description"= "This would be description text";
myRow[
"imgField"= MyData;
ds.Tables[
"MyImages"].Rows.Add(myRow);
da.Update(ds, 
"MyImages");

con.Close();
        
}


从数据库读BLOB
1. 从数据库读取图片字段到byte数组 
DataRow myRow=ds.Tables["MyImages"].Rows[0];
byte[] MyData= new byte[0];        
MyData =  (byte[])myRow["imgField"];
2. 由Byte数组创建图片文件
FileStream fs = new FileStream(@"C:\winnt\Gone Fishing2.BMP", FileMode.OpenOrCreate, FileAccess.Write);
fs.Write(MyData, 0,MyData.GetUpperBound(0));

ContractedBlock.gif ExpandedBlockStart.gif 从数据库读BLOB到图片
{
SqlConnection con 
= new SqlConnection("Server=Darkover;uid=<username>;pwd=<strong password>;database=northwind");
SqlDataAdapter da 
= new SqlDataAdapter("Select * From MyImages", con);
SqlCommandBuilder MyCB 
= new SqlCommandBuilder(da);
DataSet ds 
= new DataSet("MyImages");

byte[] MyData= new byte[0];
            
da.Fill(ds, 
"MyImages");
DataRow myRow;
myRow
=ds.Tables["MyImages"].Rows[0];
           
MyData 
=  (byte[])myRow["imgField"];
int ArraySize = new int();
ArraySize 
= MyData.GetUpperBound(0); 

FileStream fs 
= new FileStream(@"C:\winnt\Gone Fishing2.BMP", FileMode.OpenOrCreate, FileAccess.Write);
fs.Write(MyData, 
0,ArraySize);
fs.Close();
}

 

GridView怎么做呢?这里

转载于:https://www.cnblogs.com/DylanWind/archive/2008/12/05/1346120.html

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值