創(chuàng)建ADO.NET參數(shù)相關(guān)注意問(wèn)題
接下來(lái)您可能已經(jīng)想到了,我們將ADO.NET參數(shù)設(shè)置為上述getImage.aspx,如果需要根據(jù)圖片的id之類(lèi)的信息進(jìn)行選擇,我們?yōu)樵?FONT>ADO.NET參數(shù)頁(yè)面提供一個(gè)額外的id參數(shù)即可。。。
網(wǎng)站中的圖片可以保存到文件系統(tǒng)中,即專(zhuān)門(mén)的目錄用于圖片的存放,這樣的存儲(chǔ)配上數(shù)據(jù)庫(kù)中保存的圖片路徑信息,ADO.NET參數(shù)相信很多網(wǎng)站是這么選擇的。這樣的搭配由于存儲(chǔ)和管理信息是分開(kāi)的,其優(yōu)點(diǎn)就是對(duì)數(shù)據(jù)庫(kù)的性能不會(huì)產(chǎn)生太大影響。
但是也正是由于這種分開(kāi)網(wǎng)站的目錄結(jié)構(gòu)輕易是不可以變的,另外圖片數(shù)據(jù)的備份需要數(shù)據(jù)庫(kù)和文件目錄同步進(jìn)行。另ADO.NET參數(shù)外一種存儲(chǔ)和管理圖片的方式是將圖片存到數(shù)據(jù)庫(kù)中,如果站點(diǎn)的圖片數(shù)量不是太多,圖片不是太大,這種方式是相當(dāng)適合的。本文我們看一下如何使用ADO.NET Entity Framework構(gòu)建數(shù)據(jù)訪(fǎng)問(wèn)層,實(shí)現(xiàn)將圖片存到數(shù)據(jù)庫(kù)中以及從數(shù)據(jù)庫(kù)中獲取圖片。
前期工作:ADO.NET參數(shù)創(chuàng)建數(shù)據(jù)表+構(gòu)建數(shù)據(jù)訪(fǎng)問(wèn)層
***步,創(chuàng)建數(shù)據(jù)表。表中需要一個(gè)用于保存圖片的字段,類(lèi)型設(shè)置為image,代碼如下:
- CREATE TABLE [dbo].[images](
- [id] [int] IDENTITY(1,1) NOT NULL,
- [imagefile] [image] NOT NULL)
第二步,構(gòu)建數(shù)據(jù)訪(fǎng)問(wèn)層。該類(lèi)型的數(shù)據(jù)的插入與一般的基本SQL類(lèi)型不同,不過(guò)在.net 3.5平臺(tái)上工作的程序員不需要考慮太多訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的具體代碼,我們可以選擇ADO.NET Entity Framework和Linq to SQL,這里我們以前者為例。方法簡(jiǎn)單介紹如下:
項(xiàng)目中新建,選擇ADO.NET Entity Data Model,根據(jù)向?qū)Ы⒌綌?shù)據(jù)庫(kù)的連接,根據(jù)向?qū)нx擇數(shù)據(jù)庫(kù)中的剛才建立的表images,ADO.NET參數(shù)向?qū)ЫY(jié)束之后項(xiàng)目中會(huì)添加一個(gè)edmx類(lèi)型的文件,默認(rèn)的界面中會(huì)打開(kāi)自動(dòng)生成的實(shí)體類(lèi)圖,我們?cè)谙驅(qū)е羞x擇的所有表格都會(huì)對(duì)應(yīng)一個(gè)實(shí)體類(lèi)默認(rèn)的名稱(chēng)是與數(shù)據(jù)表相同,此處的images對(duì)應(yīng)的實(shí)體類(lèi)也是images,但是這樣默認(rèn)使用的話(huà)會(huì)造成歧義,我們需要手動(dòng)修改一下。
點(diǎn)擊images類(lèi)在屬性對(duì)話(huà)框中將Name屬性改為image,Entity Set Name可以改為imageSet或者不改動(dòng)保持images表示的是image集合,ADO.NET參數(shù)之后實(shí)體類(lèi)圖中對(duì)應(yīng)的類(lèi)名也變成image了。這里假設(shè)存放圖片的數(shù)據(jù)庫(kù)名為XXX,那么生成的管理類(lèi)也就是我們后面使用最多的類(lèi)名為XXXEntities。
將圖片保存到ADO.NET參數(shù)中先聲明一個(gè)image類(lèi)型的變量不妨稱(chēng)之為img, image img = new image();,繼而創(chuàng)建一個(gè)XXXEntities對(duì)象, XXXEntities XXX = new XXXEntities();asp.net web頁(yè)面中添加FileUpload控件,該控件提供一個(gè)屬性PostedFile能夠?yàn)榉?wù)器提供一個(gè)輸入輸出流,剛好可以供我們將選擇的圖片讀到服務(wù)器的內(nèi)存里,代碼如下: