[轉貼] ASP.NET如何存取SQL Server資料庫圖片

來源:互聯網
上載者:User
SQL Server提供了一個特別的資料類型:image,它是一個包含binary資料的類型。下邊這個例子就向你展示了如何將文本或照片放入到資料庫中的辦法。在這篇文章中我們要看到如何在SQL Server中儲存和讀取圖片。 

   1、建立一個表: 

   在SQL SERVER中建立這樣結構的一個表: 

列名  類型  目的  
ID  Integer  主鍵ID  
IMGTITLE  Varchar(50)  圖片的標題  
IMGTYPE  Varchar(50)  圖片類型. ASP.NET要以辨認的類型  
IMGDATA  Image  用於儲存位元據  

   2、儲存圖片到SQL SERVER資料庫中 

   為了能儲存到表中,你首先要上傳它們到你的WEB 伺服器上,你可以開發一個web form,它用來將用戶端中TextBox web control中的圖片入到你的WEB伺服器上來。將你的 encType 屬性設定為:myltipart/formdata. 

Stream imgdatastream = File1.PostedFile.InputStream; 
int imgdatalen = File1.PostedFile.ContentLength; 
string imgtype = File1.PostedFile.ContentType; 
string imgtitle = TextBox1.Text; 
byte[] imgdata = new byte[imgdatalen]; 
int n = imgdatastream.Read(imgdata,0,imgdatalen); 
string connstr=((NameValueCollection)Context.GetConfig("appSettings"))["connstr"]; 

SqlConnection connection = new SqlConnection(connstr); 

SqlCommand command = new SqlCommand 
          ("INSERT INTO ImageStore(imgtitle,imgtype,imgdata) 
          VALUES ( @imgtitle, @imgtype,@imgdata )", connection ); 

SqlParameter paramTitle = new SqlParameter 
          ("@imgtitle", SqlDbType.VarChar,50 ); 

paramTitle.Value = imgtitle; 
command.Parameters.Add( paramTitle); 

SqlParameter paramData = new SqlParameter( "@imgdata", SqlDbType.Image ); 
paramData.Value = imgdata; 
command.Parameters.Add( paramData ); 

SqlParameter paramType = new SqlParameter( "@imgtype", SqlDbType.VarChar,50 ); 
paramType.Value = imgtype; 
command.Parameters.Add( paramType ); 

connection.Open(); 
int numRowsAffected = command.ExecuteNonQuery(); 
connection.Close();  

   3、從資料庫中恢複讀取 

   現在讓我們來從SQL Server中讀取我們放入的資料吧!我們將要輸出圖片到你的瀏覽器上,你也可以將它存放到你要的位置。 

private void Page_Load(object sender, System.EventArgs e) 

  string imgid =Request.QueryString["imgid"]; 
  string connstr=((NameValueCollection) 
  Context.GetConfig("appSettings"))["connstr"]; 
  string sql="SELECT imgdata, imgtype FROM ImageStore WHERE id = " + imgid; 
  SqlConnection connection = new SqlConnection(connstr); 
  SqlCommand command = new SqlCommand(sql, connection); 
  connection.Open(); 
  SqlDataReader dr = command.ExecuteReader(); 
  if(dr.Read()) 
  { 
   Response.ContentType = dr["imgtype"].ToString(); 
   Response.BinaryWrite( (byte[]) dr["imgdata"] ); 
  } 
  connection.Close(); 
}  

   要注意的是Response.BinaryWrite 而不是Response.Write. 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.