用ASP.NET2.0在數據庫中存儲二進制文件
2007/1/12 21:39:23

一、 引言

  在構建數據驅動的應用程序時,經常需要捕獲文本和二進制數據。這樣的程序可能需要存儲圖像,PDF,Word文件或其它二進制數據。能夠使用兩種方式來存儲這些二進制數據:存儲在web服務器的文件系統上并添加一個對數據庫中相應文件的引用;或直接存儲在數據庫本身。

  文本數據,例如字符串,數字,日期,GUID,貨幣值,等等-在數據庫系統中都有適當的和相應的數據類型定義。例如,在Microsoft SQL Server中,你可以使用int數據類型來存儲一個整數值;而為了存儲一個字符串值,你可以使用一個varchar或nvarchar類型。另外,數據庫還提供了用于存儲二進制數據的類型定義。在Microsoft SQL SERVER 2000及早期版本中,使用image數據類型來存儲二進制數據;而在SQL SERVER 2005中,使用varbinary(MAX)數據類型。使用上面兩種方式中的任何一種,這些數據類型都能夠存儲可達2GB大小的二進制數據。

  不過,當直接把二進制數據存儲在數據庫時,需要增加一些額外工作來實現插入、更新和檢索二進制數據。幸好,我們可以通過更高級的數據存取庫-例如ADO.NET-對這種復雜的低級T-SQL操作加以抽象,從而使問題變得相當簡單。然而,通過ADO.NET方式使用二進制數據與使用文本數據的確有點不同。在本文中,我們將分析如何使用ADO.NET和ASP.NET 2.0 SqlDataSource控件直接通過一個數據庫來存儲和檢索圖像文件。請接著往下閱讀!

  二、 把數據存儲在數據庫中與存儲在文件系統中的比較

  正如剛才介紹的,當捕獲一個應用程序中的二進制數據時,該二進制數據既可以直接存儲在數據庫中也可以作為一個文件保存在web服務器的文件系統中-僅保持一個對數據庫中文件的引用。根據我的體驗,我發現大多數開發者更喜歡在文件系統中存儲二進制數據,這主要基于下列原因:

  · 需要較少的工作-存儲和檢索存儲在數據庫中的二進制需要更多的編碼工作。而且,更新這些二進制數據也會更為容易-不需要與數據庫通訊,只須直接修改文件即可!

  · 指向文件的URL更為直接-正如我們將在本文中所看到的,為了提供存取存儲在一個數據庫中的二進制數據,我們需要創建另一個能夠返回該數據的ASP.NET頁面。典型地,會把相應于數據庫中對應記錄(返回它的二進制數據)的一個唯一的標識符傳遞給這個頁面。結果是,為了存取該二進制數據-比方說一個上傳的圖像-該URL看上去如http://www.yourserver.com/ShowImage.aspx?ID=4352的形式,而如果該圖像直接存儲在文件系統中,URL將更為直接些-例如http://www.yourserver.com/UploadedImages/Sam.jpg。

  · 為顯示圖像提供更好的工具支持-如果你在使用ASP.NET 2.0,那么,你可以在GridView或DetailsView控件中使用ImageField控件來顯示一個圖像(它的圖像路徑存儲在數據庫中)。然而,遺憾的是,這個ImageField卻無法直接顯示數據庫中的圖像數據(既然它要求查詢一個外部頁面并且返回相應的數據)。

  · 性能-既然二進制文件存儲在web服務器的文件系統而不是存儲在數據庫中,那么,應用程序可以訪問數據庫中較少的數據,從而減少了對數據庫的要求,也相應地減少了存在于web和數據庫服務器之間的網絡擁擠。

  把數據直接存儲在數據庫的主要優點在于,它能夠使數據成為"自包含的"。既然所有的數據都包含在數據庫中,那么,數據支持、數據在數據庫服務器間的移動以及數據庫復制等等就容易得多了,因為不存在擔心復制或備份存儲在文件系統中的二進制內容這樣的問題。

  如往常一樣,至于選擇哪種存儲方案要具體依賴于實際的使用場所和業務需要。例如,我開發過一個客戶端,其中的二進制數據必須存儲在數據庫中,因為它們使用的報告軟件僅能夠在報告中包括二進制數據-如果它來自于數據庫的話。在

下一頁
返回列表
返回首頁 主站蜘蛛池模板: 精品国产三级a∨在线观看| 97久久精品人人澡人人爽| 日韩成人免费aa在线看| 亚洲欧洲精品成人久久曰| 第一福利官方导航| 国产久视频观看| 欧美性狂猛bbbbbxxxxx| 国产自偷在线拍精品热| 《调教办公室》在线观看 | 国产三级电影免费观看| 日韩视频第二页| 国产美女免费观看| a级毛片免费观看在线播放| 性欧美69式xxxxx| 丰满女人又爽又紧又丰满| 日韩欧美国产成人| 亚洲人在线视频| 欧美激情视频网| 伸进大胸老师里面挤奶吃奶的频| α片毛片免费看| 无码专区久久综合久中文字幕| 久久综合色综合| 欧美伊香蕉久久综合类网站| 免费A级毛片在线播放不收费| 综合91在线精品| 四虎最新永久免费视频| 青青青青久久国产片免费精品| 国产探花视频在线观看| 1024你懂的国产精品| 国产超爽人人爽人人做| 99久久精品费精品国产| 天天躁夜夜躁狠狠躁2021| 一本色道久久88加勒比—综合| 成品人视频ww入口| 久久久久久AV无码免费看大片| 日韩一级在线播放免费观看| 亚洲AV无码之日韩精品| 欧美人与动人物姣配xxxx| 亚洲成a人片在线观看中文!!!| 波多野结衣办公室jian情| 人人狠狠综合久久亚洲|