程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET中存取SQL Server數據庫中的圖片

ASP.NET中存取SQL Server數據庫中的圖片

編輯:關於ASP.NET

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.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved