Asp.Net在SqlServer中的图片存取

在使用asp.net将图片上传并存入SqlServer中,然后从SqlServer中读取并显示出来 
一,上传并存入sqlserver 
 数据库结构 
  
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(); 


二,从sqlserver中读取并显示出来 
在需要显示图片的地方添加如下代码: 
<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() 
                reader.
Read(); 
                Response.ContentType
="application/octet-stream"; 
                Response.BinaryWrite((Byte
[])reader["FImage"]); 
                Response.
End(); 
                reader.
Close(); 
     } 


posted @ 2006-11-22 15:27  RicoRui  阅读(667)  评论(0编辑  收藏  举报