在SQL Server中儲存和輸出圖片

來源:互聯網
上載者:User
server


介紹
有時候我們需要儲存一些binary data進資料庫。SQL Server提供一個叫做image的特殊資料類型供我們儲存binary data。Binary data可以是圖片、文檔等。在這篇文章中我們將看到如何在SQL Server中儲存和輸出圖片。

建表

為了實驗這個例子你需要一個含有資料的table(你可以在現在的庫中建立它,也可以建立一個新的資料庫),下面是它的結構:

Column Name
Datatype
Purpose

ID
Integer
identity column Primary key

IMGTITLE
Varchar(50)
Stores some user friendly title to identity the image

IMGTYPE
Varchar(50)
Stores image content type. This will be same as recognized content types of ASP.NET

IMGDATA
Image
Stores actual image or binary data.





儲存images進SQL Server資料庫



為了儲存圖片到table你首先得從用戶端上傳它們到你的web伺服器。你可以建立一個web form,用TextBox得到圖片的標題,用HTML File Server Control得到圖片檔案。確信你設定了Form的encType屬性為multipart/form-data。



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();



從資料庫中輸出圖片



現在讓我們從資料庫中取出我們剛剛儲存的圖片,在這兒,我們將直接將圖片輸出至瀏覽器。你也可以將它儲存為一個檔案或做任何你想做的。



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();

}


在上面的代碼中我們使用了一個已經開啟的資料庫,通過datareader選擇images。接著用Response.BinaryWrite代替Response.Write來顯示image檔案。

希望您喜歡這些文章,如有任何意見和建議請致信webmaster@bipinjoshi.com。




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.