国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

如何在SQL Server中保存和輸出圖片

2024-08-31 00:43:40
字體:
來源:轉載
供稿:網友

有很多網友想在數據庫中保存圖片,雖然這不是什么最好的選擇,但有時的確很有用。

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

1、建表

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

列名 數據類型 目的
ID integer 主鍵
IMGTITLE varchar(50) 存儲圖片名字
IMGTYPE varchar(50) 存儲圖片類型
IMGDATA image 存儲圖片本身數據

2、保存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();

3、從數據庫中輸出圖片

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

   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文件。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江达县| 东阳市| 宁海县| 哈尔滨市| 唐河县| 高雄市| 收藏| 桃源县| 兴化市| 衡南县| 罗定市| 沁水县| 县级市| 娄底市| 嘉荫县| 溧阳市| 沾益县| 南乐县| 多伦县| 江达县| 长海县| 淮阳县| 永昌县| 静乐县| 巴彦淖尔市| 合水县| 乐都县| 武夷山市| 泊头市| 潼关县| 天峨县| 隆德县| 井冈山市| 芮城县| 婺源县| 西城区| 上杭县| 光泽县| 山阴县| 绿春县| 安溪县|