武金萍 崔冬華
摘 要:本文介紹了在VB中利用ADO的AppendChunk方法在數(shù)據(jù)庫中存取BLOB數(shù)據(jù)的具體方法,并給出實現(xiàn)圖像存取顯示的完整工作過程,為多媒體信息管理系統(tǒng)的開發(fā)提供了有效的解決方案。
關鍵詞:VB 數(shù)據(jù)庫 ADO BLOB圖像存取
中圖分類號:TP311.134.3 文獻標識碼:B 文章編號:1673-8454(2009)01-0082-05
一、引言
在使用數(shù)據(jù)庫的過程中,除了保存大量的文字信息以外,我們經(jīng)常要存儲一些較大的二進制數(shù)據(jù)對象,像圖形、長文本、多媒體(視頻、音頻文件)等,例如:一個學生管理系統(tǒng)就需要對每個人的照片進行保存,以便對每個人的信息進行處理。這些數(shù)據(jù)被稱之為二進制大對象BLOB(Binary Large Object),亦稱為大對象類型數(shù)據(jù)。[1]二進制大對象、OLE對象可以通過BLOB類型存入數(shù)據(jù)庫,如果文本對象過大,超出了文本類型的規(guī)定長度,則必須用BLOB字段進行存儲。[2] 將BLOB數(shù)據(jù)存儲在數(shù)據(jù)庫的相應字段中,其存取的方式與普通數(shù)據(jù)有所區(qū)別。我們在經(jīng)常使用的編程環(huán)境中并不能直接支持BLOB字段,因此需要調用相應的函數(shù)完成BLOB數(shù)據(jù)的使用。本文介紹在VB中,如何通過ADO的AppendChunk方法,將BLOB數(shù)據(jù)的寫入操作。
二、二進制大對象的存取方法
可以使用ADO中的AppendChunk方法來存取BLOB數(shù)據(jù)。AppendChunk包含在Field對象中,語法如下:[3]
ADO對象.Recordset.Fields(字段). AppendChunkData
其中,參數(shù)Data包含追加到數(shù)據(jù)庫中的BLOB數(shù)據(jù)。
通常的處理步驟如下:
(1)用二進制方式打開BLOB數(shù)據(jù)文件;
(2)定義一個字節(jié)類型的數(shù)組,數(shù)組大小為文件長度;
(3)將文件保存到數(shù)組;
(4)使用ADO對象的AppendChunk方法寫入數(shù)據(jù)庫。
三、二進制大對象處理方法的具體實現(xiàn)
在得到圖片數(shù)據(jù)并將其保存到數(shù)據(jù)庫中時,要使用ADO的AppendChunk方法。[4]程序界面如圖1所示,單擊“圖片輸入”按鈕,打開通用對話框,選擇指定的圖形文件到數(shù)據(jù)庫;在瀏覽記錄時可以顯示圖片;單擊“圖片刪除”按鈕,刪除已加載的圖片。
首先,在Access中創(chuàng)建一個數(shù)據(jù)庫文件Student.mdb,在該庫中建立一個表(表名為jbqk),字段如表1所示。
接著,在VB中創(chuàng)建一個工程,在form1窗體上添加ADO控件、命令按鈕、圖像控件、通用對話框、文本框和標簽控件。將Adodc1控件連接到數(shù)據(jù)庫Student.mdb,指定記錄源為“jbqk”表。
所用的控件及屬性設置見表2。
具體的窗口代碼如下:
(1)為數(shù)據(jù)庫添加圖片
Private Sub Command1_Click()
Dim a()As Byte ′定義一個動態(tài)數(shù)組為字節(jié)類型
CommonDialog1.ShowOpen ′顯示打開對話框
Open CommonDialog1.FileName For Binary As #1′以二進制讀方式打開源文件
fl = LOF(1)′獲得文件長度
ReDim a(fl)′設置數(shù)組大小為文件長度
Get #1, , a ′讀文件到數(shù)組中
Adodc1.Recordset.Fields("照片").AppendChunka
Close #1
Image1.Picture = LoadPicture(CommonDialog1.FileName)′更新Image1內的圖形
End Sub
(2)數(shù)據(jù)庫中圖片數(shù)據(jù)的刪除
Private Sub Command 2_Click()'單擊命令按鈕2實現(xiàn)數(shù)據(jù)庫中圖片的刪除
Adodc1.Recordset.Fields("照片").AppendChunk""
Adodc1.Recordset.Update
Image1.Picture = LoadPicture("")
End Sub
四、結束語
Visual Basic 6.0為存取BLOB數(shù)據(jù)提供了靈活的接口。本文所闡述的方法不但適用于圖像文件,同樣適用于其它類型的文件。數(shù)據(jù)庫中BLOB數(shù)據(jù)的處理方法很多,不同的程序設計語言針對不同的DBMS,其處理方法都有差異。圖片的出現(xiàn)為Visual Basic程序增添了美麗的情調,使程序更富魅力、更具專業(yè)。
參考文獻:
[1]魏文勝.在VB中存取SQL Server 2000二進制數(shù)據(jù)的方法[J].電腦知識與技術(學術交流),2006(20):42-43.
[2]龔沛曾,楊志強,陸慰民. Visual Basic程序設計教程(第三版)[M].北京:高等教育出版社,2007.
[3]鄭阿奇.Visual Basic實用教程(第二版)[M].北京:電子工業(yè)出版社,2003.
[4]余璆. VB對底層訪問的典型例子[J].計算機應用與軟件; 2004(11):115-117.