sqlserver圖片數(shù)據(jù)的存取.doc

sqlserver圖片數(shù)據(jù)的存取.doc

ID:59252514

大小:53.00 KB

頁(yè)數(shù):6頁(yè)

時(shí)間:2020-09-08

sqlserver圖片數(shù)據(jù)的存取.doc_第1頁(yè)
sqlserver圖片數(shù)據(jù)的存取.doc_第2頁(yè)
sqlserver圖片數(shù)據(jù)的存取.doc_第3頁(yè)
sqlserver圖片數(shù)據(jù)的存取.doc_第4頁(yè)
sqlserver圖片數(shù)據(jù)的存取.doc_第5頁(yè)
資源描述:

《sqlserver圖片數(shù)據(jù)的存取.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)

1、SQLSERVER中進(jìn)行圖像存取的實(shí)現(xiàn)方法在數(shù)據(jù)庫(kù)應(yīng)用項(xiàng)目開(kāi)發(fā)中,經(jīng)常會(huì)使用一些二進(jìn)制的圖像數(shù)據(jù),存儲(chǔ)和讀取顯示圖像數(shù)據(jù)主要采用的是路徑鏈接法和內(nèi)存流法。路徑鏈接法是將圖像文件保存在固定的路徑下,數(shù)據(jù)庫(kù)中只存儲(chǔ)圖像文件的路徑和名稱(chēng),此方法數(shù)據(jù)庫(kù)容量小,存取速度快,但安全性較差;內(nèi)存流法是將二進(jìn)制數(shù)據(jù)直接存儲(chǔ)在數(shù)據(jù)庫(kù)中,此方法對(duì)數(shù)據(jù)的共享非常方便,安全性相對(duì)較高,常用于圖像容量不是很大的時(shí)候?! ”疚闹饕懻撏ㄟ^(guò)SQLServer2008使用內(nèi)存流法如何實(shí)現(xiàn)二進(jìn)制圖像數(shù)據(jù)的存儲(chǔ)。?1 VARBINARY(MAX)數(shù)據(jù)類(lèi)型簡(jiǎn)介  在SQLServer2000和更早的版本中,如果每條記錄的數(shù)據(jù)量遠(yuǎn)遠(yuǎn)

2、超過(guò)了一個(gè)單獨(dú)記錄的8K,我們常用IMAGE數(shù)據(jù)類(lèi)型以二進(jìn)制存儲(chǔ)該數(shù)據(jù),在使用IMAGE數(shù)據(jù)類(lèi)型時(shí),數(shù)據(jù)是不和普通數(shù)據(jù)存儲(chǔ)在一起的。一個(gè)被稱(chēng)作指針的很小的二進(jìn)制值,和普通數(shù)據(jù)存儲(chǔ)在一起,這個(gè)二進(jìn)制值指向數(shù)據(jù)文件里的數(shù)據(jù)實(shí)際存儲(chǔ)的位置。對(duì)IMAGE數(shù)據(jù)進(jìn)行讀取、插入數(shù)據(jù)時(shí)需要使用READTEXT[1]及WRITETEXT命令,這兩個(gè)命令需使用TEXTPTR函數(shù)來(lái)獲得正確的二進(jìn)制指針,這個(gè)二進(jìn)制指針用于定位物理文件中的數(shù)據(jù),使用起來(lái)較麻煩?! ‰m然在SQLServer2008中依然提供IMAGE數(shù)據(jù)類(lèi)型,但微軟計(jì)劃在未來(lái)的SQLServer版本中刪除IMAGE數(shù)據(jù)類(lèi)型,用VARBINARY(MAX

3、)數(shù)據(jù)類(lèi)型來(lái)代替,在該版本下不應(yīng)當(dāng)使用IMAGE這種類(lèi)型?! ARBINARY(MAX)為可變長(zhǎng)度二進(jìn)制數(shù)據(jù),不限最大長(zhǎng)度,常用于數(shù)據(jù)超出8,000字節(jié)時(shí),可以直接使用insert命令添加數(shù)據(jù),使用起來(lái)較簡(jiǎn)單。?2 使用T-SQL語(yǔ)句將圖像文件直接讀入VARBINARY(MAX)字段  首先在SQLServer2008的查詢(xún)窗口中創(chuàng)建測(cè)試數(shù)據(jù)庫(kù)ImageDB,并建立ImageTable表來(lái)存儲(chǔ)圖像數(shù)據(jù):  CREATEDATABASEImageTest  GO  USEImageTest;  GO  CREATETABLEImageTable  (  ImageDatavarBinary(M

4、AX)  );  然后使用Insert命令將其插入到ImageTest表中(此處圖像文件為C:aa.jpg),OPENROWSET函數(shù)包含訪問(wèn)OLEDB數(shù)據(jù)源中的遠(yuǎn)程數(shù)據(jù)所需的全部連接信息,內(nèi)置的BULK訪問(wèn)接口支持大容量操作,實(shí)現(xiàn)的代碼為:INSERTINTOImageTable(ImageData)??SELECT?*??FROMOPENROWSET(BULKN'C:aa.jpg',SINGLE_BLOB)ASPhotoGO  運(yùn)行Select*fromImageTable語(yǔ)句將會(huì)看到該圖像的二進(jìn)制編碼,但SQLServer2008不提供直接查看圖片的方法,為了查看圖片,我們需要?jiǎng)?chuàng)建應(yīng)

5、用程序,本文第4部分介紹其實(shí)現(xiàn)的方法。?3 在SQLServer中將二進(jìn)制數(shù)據(jù)復(fù)制到圖像文件  在SQLServer2008中將二進(jìn)制數(shù)據(jù)復(fù)制到圖像文件,要對(duì)Windows的文件進(jìn)行操作,我們需要用到xp_cmdshell擴(kuò)展存儲(chǔ)過(guò)程,在使用之前我們需獲得執(zhí)行該命令的權(quán)限:   EXECsp_configure'showadvancedoptions',1   GO   RECONFIGURE   GO   EXECsp_configure'xp_cmdshell',1   GO   RECONFIGURE   GO  通過(guò)執(zhí)行xp_cmdshell將二進(jìn)制數(shù)據(jù)復(fù)制到圖像文件:  EXEC??

6、master..xp_cmdshell??'bcp"SELECTImageDataFROMImageTest.dbo.ImageTable"queryout"c:bb.jpg"-T-c'  Go  可以看到C盤(pán)下增加了一個(gè)圖像文件bb.jpg。?4 使用C#.NET存取SQLServer2008中的圖像數(shù)據(jù)  為在2中創(chuàng)建的ImageTable表添加一個(gè)ImagePath字段,用于記錄圖像的路徑及文件名。在窗體上添加一個(gè)按鈕,用于實(shí)現(xiàn)將圖像文件讀入SQLServer,實(shí)現(xiàn)的基本過(guò)程是先通過(guò)openFileDialog控件選擇要讀入的圖像文件,將圖像文件轉(zhuǎn)換成二進(jìn)制流,連接數(shù)據(jù)庫(kù)后使用inse

7、rt命令將二進(jìn)制流數(shù)據(jù)存儲(chǔ)到SQLServer,實(shí)現(xiàn)的代碼如下:  this.openFileDialog1.ShowDialog();  stringfile=this.openFileDialog1.FileName;  try  {??  SqlConnectionsqlConnection=newSqlConnection(@"Data  Source=.weisql;InitialCa

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。