国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

.Net+SQL Server圖像存取的研究與實現(xiàn)

2012-11-26 06:32:32歐陽艷階王家旭
關(guān)鍵詞:二進(jìn)制字節(jié)代碼

歐陽艷階,王家旭

(十堰職業(yè)技術(shù)學(xué)院 信息與智能工程系,湖北 十堰 442000)

隨著計算機(jī)軟件在各個行業(yè)的應(yīng)用發(fā)展,管理信息系統(tǒng)成為必不可少的管理工具。在管理信息系統(tǒng)中,圖像存取成為必不可少的信息處理要求。如照片、醫(yī)用影像、工程圖紙掃描圖像、地圖等。然而圖像信息所含的數(shù)據(jù)量遠(yuǎn)遠(yuǎn)大于普通數(shù)據(jù)的數(shù)據(jù)量。如何在管理信息系統(tǒng)中存取圖像也是程序員在開發(fā)過程中要解決的關(guān)鍵問題。

本文結(jié)合筆者開發(fā)的汽車零部件管理信息系統(tǒng)中汽車及零部件圖像的存取功能,給出了圖像的兩種存儲及讀取方法,并使用C#.Net開發(fā)工具實現(xiàn)了圖像在SQL Server 2005數(shù)據(jù)庫中的存儲和讀取操作。

1 圖像存取方法概述

通常程序員在解決管理信息系統(tǒng)中圖像的存取問題時主要采用兩種方法。一是將圖像以數(shù)據(jù)庫方式存儲;二是將圖像以文件系統(tǒng)存儲。這兩種方式各有優(yōu)缺點,其使用環(huán)境也有差別。

1.1 圖像以數(shù)據(jù)庫方式存儲

這種圖像存取方式優(yōu)點有以下幾個方面:

(1)管理方便。當(dāng)圖像與其他數(shù)據(jù)一同存儲在數(shù)據(jù)庫中時,圖像與其他數(shù)據(jù)能共同備份和復(fù)原。從而避免了普通數(shù)據(jù)與圖像數(shù)據(jù)的不同步,并且避免了其他用戶無意中誤操作圖像的風(fēng)險。

(2)共享與查詢效率高。將圖像存儲在SQL Server數(shù)據(jù)庫中可以與其他數(shù)據(jù)一樣,同時完成插入、修改、刪除和查詢操作,保證圖像與普通數(shù)據(jù)的一致性。同時操作員可以在任何時間任何地點任何一部終端上打開數(shù)據(jù)庫并使用圖像數(shù)據(jù),大大提高圖像數(shù)據(jù)的共享、查詢效率。

(3)提高圖像安全性。圖像存儲到SQL Server數(shù)據(jù)庫中以后,其安全性,特別是遠(yuǎn)程訪問安全性將由SQL Server提供的安全保證機(jī)制來實現(xiàn),大大提高圖像訪問控制的強(qiáng)度。

但將圖像存儲于數(shù)據(jù)庫方式也存在著以下缺陷:

(1)圖像放在數(shù)據(jù)庫中不便于修改編輯。

(2)數(shù)據(jù)庫讀取數(shù)據(jù)時的I/O消耗比較大。

1.2 文件系統(tǒng)存儲圖像

使用文件系統(tǒng)存儲是指將圖像存儲在文件中,將文件的路徑信息存儲在數(shù)據(jù)庫中,通過數(shù)據(jù)庫中的路徑信息來完成存儲在指定的文件夾中的文件操作。

這種圖像方式有以下優(yōu)點:

(1)圖像編輯簡單方便。編輯圖像時使用工具軟件對圖像進(jìn)行直接編輯、存儲,只與硬盤打交道,不涉及數(shù)據(jù)庫和其他服務(wù)功能,簡單方便。

(2)節(jié)省數(shù)據(jù)庫空間,有效地避免了數(shù)據(jù)庫的膨脹。

但是,這種方式需要借助文件系統(tǒng)實現(xiàn)。其最大的缺點是文件系統(tǒng)的安全保護(hù)措施比較脆弱,可能會造成圖像信息的不良復(fù)制、修改、刪除及誤操作。

2 SQL Server圖像存取的相關(guān)訪問類

2.1 數(shù)據(jù)庫訪問類

.NET平臺下SQL Server常見的數(shù)據(jù)驅(qū)動類在System.Data.SqlClient類庫中,本文SQL Serv-er圖像存取功能的實現(xiàn)必須使用以下兩個類。

(1)SqlConnection類。SqlConnection類用于連接數(shù)據(jù)庫,它代表數(shù)據(jù)庫和數(shù)據(jù)用戶之間的實際連接。這個對象中包含有用于打開和關(guān)閉連接的方法,并且還包含有描述當(dāng)前連接狀態(tài)的屬性。Sql-Connection類的語法格式如下:SqlConnection conn=new SqlConnection(“Server=服務(wù)器標(biāo)識;Data-Base=數(shù)據(jù)庫名稱;Uid=用戶名稱;pwd=密碼;”);

Server:目標(biāo)服務(wù)器IP,若為本機(jī)可使用“.”或“(Local),”;

DataBase:目標(biāo)數(shù)據(jù)庫名稱 ;

Uid或User ID,連接數(shù)據(jù)庫的用戶名;

Pwd或Password:連接數(shù)據(jù)庫的密碼。

(2)SqlCommand類。SqlCommand類是數(shù)據(jù)庫命令的封裝。這個命令既可以是SQL語句,又可以是存儲過程。SqlCommand類可以重置CommandText屬性并重復(fù)使用SqlCommand對象。SqlCommand類特別提供了對SQL Server數(shù)據(jù)庫執(zhí)行命令的方法。ExecuteReader方法執(zhí)行有返回行的命令,該方法需要設(shè)定SQLDataReader對象接受返回結(jié)果;ExecuteNonQuery方法執(zhí)行如INSERT、DELELE、UPDATE語句等無返回結(jié)果的命令;ExecuteScalar方法從數(shù)據(jù)庫中檢索單個值(例如一個聚合值);ExecuteXmlReader方法將CommandText發(fā)送到Connection并生成一個XmlReader對象。

2.2 文件I/O類

FileStream類是以文件輸入輸出為主的Stream,既支持同步讀寫操作,也支持異步讀寫操作,其命名空間為System.IO。FileStream對象可以通過URL指定的簡單文件打開硬盤中的圖像文件,其作用是提供通用文件訪問功能。在各種數(shù)據(jù)庫文件訪問中,F(xiàn)ileStream以其易于使用、熟悉的界面、高速度以及較低的內(nèi)存占用,成為目前操作最方便的數(shù)據(jù)訪問技術(shù)。

FileStream對象提供文件讀取、寫入以及管理字節(jié)流的手段。該字節(jié)流可以是文本或二進(jìn)制數(shù),并且在大小方面只受限于系統(tǒng)資源。

2.3 圖像定義與轉(zhuǎn)換類Image

在SQL Server數(shù)據(jù)庫中,小于8 000字節(jié)的圖像數(shù)據(jù)可以用二進(jìn)制型(binary、varbinary)來表示。對于大于8 000個字節(jié)的圖像,SQL Server提供二進(jìn)制大對象(BLOB)進(jìn)行存儲。Image數(shù)據(jù)類型即是BLOB對象的一種,用于存儲二進(jìn)制類型數(shù)據(jù),比如:圖像、視頻、可執(zhí)行文件等。C#中Image類提供了位圖和元文件操作的函數(shù),該類的圖像處理方法有以下三種:

(1)FromFile方法。它根據(jù)輸入的文件名產(chǎn)生一個Image對象,其函數(shù)形式包括public static Image FromFile(string filename)和public static Image FromFile(string filename,bool useEmbedded-ColorManagement)兩種;

(2)FromHBitmap方法。它從一個 windows句柄處創(chuàng)建一個bitmap對象,其函數(shù)形式包括public static bitmap fromhbitmap(intptr hbitmap)和public static bitmap fromhbitmap(intptr hbitmap,intptr hpalette)兩種;

(3)FromStream方法。從一個數(shù)據(jù)流中創(chuàng)建一個image對象,其函數(shù)形式包括public static image fromstream(stream stream)、public static image fromstream(stream stream,bool useembeddedcolormanagement) 和 fromstream (stream stream,bool useembeddedcolormanagement,bool validateimagedata)三種。

3 圖像數(shù)據(jù)存取服務(wù)的設(shè)計與實現(xiàn)

筆者結(jié)合“汽車零部件管理”的開發(fā),詳細(xì)介紹C#.Net+SQL Server數(shù)據(jù)庫圖像存取的實現(xiàn)方法。

3.1 數(shù)據(jù)庫的設(shè)計

創(chuàng)建數(shù)據(jù)庫“AutoManageDB”,并創(chuàng)建表“AutoPhotoTable”,表結(jié)構(gòu)設(shè)計為:(PictureID int;PictureContent Image;PictureText varchar(50))。在數(shù)據(jù)庫設(shè)計中,設(shè)計圖像字段PictureContent的類型為Image,存儲二進(jìn)制數(shù)據(jù);設(shè)計圖像描述字段PictureText為varchar(50),用于存儲圖像的查詢關(guān)鍵字。

3.2 圖像存儲代碼及算法[1]

在使用SQL Server數(shù)據(jù)庫進(jìn)行圖片存儲時,首先將圖像文件轉(zhuǎn)換為二進(jìn)制數(shù)據(jù),并保存在內(nèi)存。然后建立與數(shù)據(jù)庫的連接,使用SqlCommand類的Insert語句將圖像插入數(shù)據(jù)庫中表的指定字段。Stream對象提供讀取、寫入以及管理字節(jié)流的手段。該字節(jié)流可以是文本或二進(jìn)制數(shù),并且在大小方面只受限于系統(tǒng)資源?!按鎯D像到數(shù)據(jù)庫”的代碼如下:

代碼中最關(guān)鍵的設(shè)計是圖像變量的定義及圖像長度的獲取。使用Parameters.Add方法和photo.Length屬性即可獲取和設(shè)置。

3.3 圖像讀取功能代碼及算法

讀取存儲在數(shù)據(jù)庫表中的二進(jìn)制圖像數(shù)據(jù)時,直接查詢圖像所在記錄,讀入內(nèi)存,并通過字節(jié)數(shù)組轉(zhuǎn)換為PictureBox控件能顯示的文件流數(shù)據(jù)直接顯示。其核心代碼如下:

4 結(jié)束語

一個好的圖像存取解決方案不僅能夠使管理信息系統(tǒng)具有更大的適應(yīng)性,而且能大大提高管理信息系統(tǒng)的使用方便性和執(zhí)行效率。本文介紹的設(shè)計思想在Visual C#.Net 2008+SQL Server 2008環(huán)境中成功地實現(xiàn)了圖像在數(shù)據(jù)庫的存取。該方法操作簡單,容易掌握,使得我們不需要編寫大量的代碼,就可以實現(xiàn)在管理信息系統(tǒng)中存儲和顯示圖像文件。

[1]徐人鳳.SQL Server 2005數(shù)據(jù)庫及應(yīng)用[M].北京:高等教育出版社,2007:72.

猜你喜歡
二進(jìn)制字節(jié)代碼
用二進(jìn)制解一道高中數(shù)學(xué)聯(lián)賽數(shù)論題
No.8 字節(jié)跳動將推出獨立出口電商APP
有趣的進(jìn)度
二進(jìn)制在競賽題中的應(yīng)用
No.10 “字節(jié)跳動手機(jī)”要來了?
創(chuàng)世代碼
動漫星空(2018年11期)2018-10-26 02:24:02
創(chuàng)世代碼
動漫星空(2018年2期)2018-10-26 02:11:00
創(chuàng)世代碼
動漫星空(2018年9期)2018-10-26 01:16:48
創(chuàng)世代碼
動漫星空(2018年5期)2018-10-26 01:15:02
簡談MC7字節(jié)碼
叶城县| 蒲江县| 盘山县| 满洲里市| 通州区| 探索| 雷州市| 运城市| 百色市| 离岛区| 望奎县| 镇沅| 泗水县| 阿瓦提县| 玉环县| 台山市| 岑巩县| 墨玉县| 泽普县| 望都县| 鄂尔多斯市| 丹凤县| 尼木县| 息烽县| 利川市| 岳西县| 交口县| 武清区| 绥江县| 来凤县| 大港区| 新密市| 三江| 新乡县| 承德县| 海阳市| 天峻县| 三河市| 合肥市| 烟台市| 同江市|