熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

在SQL Server中保存和輸出圖片的具體方法

2013-11-15 14:37:17  來源: SQL Server 

  介紹
  有時候我們需要保存一些binary data進數據庫SQL Server提供一個叫做image的特殊數據類型供我們保存binary dataBinary data可以是圖片文檔等在這篇文章中我們將看到如何在SQL Server中保存和輸出圖片
  
  建表
  為了試驗這個例子你需要一個含有數據的table(你可以在現在的庫中創建它也可以創建一個新的數據庫)下面是它的結構
  
  Column Name
  Datatype
  Purpose
  
  ID
  Integer
  identity column Primary key
  
  IMGTITLE
  Varchar()
  Stores some user friendly title to identity the image
  
  IMGTYPE
  Varchar()
  Stores image content type This will be same as recognized content types of ASPNET
  
  IMGDATA
  Image
  Stores actual image or binary data
  
  保存images進SQL Server數據庫
  為了保存圖片到table你首先得從客戶端上傳它們到你的web服務器你可以創建一個web form用TextBox得到圖片的標題用HTML File Server Control得到圖片文件確信你設定了Form的encType屬性為multipart/formdata
  
  Stream imgdatastream = FilePostedFileInputStream;
  
  int imgdatalen = FilePostedFileContentLength;
  
  string imgtype = FilePostedFileContentType;
  
  string imgtitle = TextBoxText;
  
  byte[] imgdata = new byte[imgdatalen];
  
  int n = imgdatastreamRead(imgdataimgdatalen);
  
  string connstr=
  
  ((NameValueCollection)ContextGetConfig
  
  (appSettings))[connstr];
  
  SqlConnection connection = new SqlConnection(connstr);
  
  SqlCommand command = new SqlCommand
  
  (INSERT INTO ImageStore(imgtitleimgtypeimgdata)
  
  VALUES ( @imgtitle @imgtype@imgdata ) connection );
  
  SqlParameter paramTitle = new SqlParameter
  
  (@imgtitle SqlDbTypeVarChar );
  
  paramTitleValue = imgtitle;
  
  commandParametersAdd( paramTitle);
  
  SqlParameter paramData = new SqlParameter
  
  ( @imgdata SqlDbTypeImage );
  
  paramDataValue = imgdata;
  
  commandParametersAdd( paramData );
  
  SqlParameter paramType = new SqlParameter
  
  ( @imgtype SqlDbTypeVarChar );
  
  paramTypeValue = imgtype;
  
  commandParametersAdd( paramType );
  
  connectionOpen();
  
  int numRowsAffected = commandExecuteNonQuery();
  
  connectionClose();
  
  從數據庫中輸出圖片
  現在讓我們從數據庫中取出我們剛剛保存的圖片在這兒我們將直接將圖片輸出至浏覽器你也可以將它保存為一個文件或做任何你想做的
  
  private void Page_Load(object sender SystemEventArgs e)
  
  {
  
  string imgid =RequestQueryString[imgid];
  
  string connstr=((NameValueCollection)
  
  ContextGetConfig(appSettings))[connstr];
  
  string sql=SELECT imgdata imgtype FROM ImageStore WHERE id =
  
  + imgid;
  
  SqlConnection connection = new SqlConnection(connstr);
  
  SqlCommand command = new SqlCommand(sql connection);
  
  connectionOpen();
  
  SqlDataReader dr = commandExecuteReader();
  
  if(drRead())
  
  {
  
  ResponseContentType = dr[imgtype]ToString();
  
  ResponseBinaryWrite( (byte[]) dr[imgdata] );
  
  }
  
  connectionClose();
  
  }
  在上面的代碼中我們使用了一個已經打開的數據庫通過datareader選擇images接著用ResponseBinaryWrite代替ResponseWrite來顯示image文件

From:http://tw.wingwit.com/Article/program/SQLServer/201311/22068.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.