国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

VB實現(xiàn)文件數(shù)據(jù)對SQLServer上傳下載

2019-11-18 17:41:35
字體:
供稿:網(wǎng)友
摘要:文件數(shù)據(jù)指存儲在數(shù)據(jù)庫中的各種文件,文中論述了用VB編程實現(xiàn)文件數(shù)據(jù)對SQLServer數(shù)據(jù)庫的上傳和下載操作的關(guān)鍵技術(shù),并以SQLServer2000環(huán)境下的數(shù)據(jù)庫為例,用VisualBasic程序設計語言給出了關(guān)鍵的程序代碼。

關(guān)鍵詞:VisualBasic,數(shù)據(jù)庫,SQLServer,上傳,下載

前言

  很多單位尤其是制造業(yè)、設計院,計算機應用開展的較早。在這些單位,各種法規(guī)文件的下達以及日常工作中產(chǎn)生的大量數(shù)據(jù),形成了種類繁雜、數(shù)量龐大檔案資料(各種文件)。面對海量數(shù)據(jù),原有檔案管理系統(tǒng)在進行數(shù)據(jù)的備份、還原、更新與維護時多數(shù)已力不從心。傳統(tǒng)的基于文件的管理方式,還給各種檔案的保密工作帶來了隱患。為此,越來越多的單位開始開發(fā)基于數(shù)據(jù)庫的文件檔案管理系統(tǒng),以期克服這些毛病。

  結(jié)合筆者開發(fā)的科技檔案管理系統(tǒng),本文以VisualBasic6.0和SQLServer2000環(huán)境下的數(shù)據(jù)庫為例,介紹文件數(shù)據(jù)對SQLServer2000數(shù)據(jù)庫的上傳和下載。

數(shù)據(jù)庫的連接

  對數(shù)據(jù)庫的操作一定在已經(jīng)與本地抑或是網(wǎng)絡數(shù)據(jù)庫建立了聯(lián)系的基礎(chǔ)上,建立連接這一需求可以通過兩種方式實現(xiàn)。

  為便于理解,這里假定服務器名為Data_Server,檔案數(shù)據(jù)庫名為Science_File,其中的一個數(shù)據(jù)表名為office,設計有一個名稱為office、類型為Image的字段,用于保存文件。為便于將不同大小的文件存儲在SQLServer的數(shù)據(jù)表中,必須在數(shù)據(jù)表中創(chuàng)建一個Image型的字段,該字段可存儲的最大文件達2GB字節(jié)。

  1、利用Adodc控件連接

  VisualBasic提供了一個Adodc控件。它通過Adodc屬性的設置,按照向?qū)崾就瓿蓴?shù)據(jù)庫的連接。具體過程如下:

  首先在屬性頁中選擇生成按鈕,進入數(shù)據(jù)鏈接屬性對話框;然后選擇該對話框中的連接屬性頁,選擇或輸入服務器名稱和數(shù)據(jù)庫等重要信息;最后測試連接,連接成功后,按確定按鈕,返回到屬性頁對話框,可獲得連接字符串,如下例:

->Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;Persist;SecurityInfo=False;InitialCatalog=Science_File;DataSource=Data_Server->

  通過下列語句,即可連接到指定的數(shù)據(jù)庫:

->dimodbcstrasString,adoconAsNewADODB.Connection
odbcstr="  lServerInfo=lServerInfo 24
 Nexti
EndIf->

  得到的服務器名通過Combo1控件顯示,可從中選擇儲存檔案數(shù)據(jù)的服務器名,再通過下列語句連接到選定服務器中的數(shù)據(jù)庫:

->odbcstr="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;_
InitialCatalog=Science_File;DataSource="&Form2.Combo1.Text
adocon.Openodbcstr'連接到數(shù)據(jù)庫->

  其中的變量含義與前述相同,F(xiàn)orm2.Combol.Text的內(nèi)容即為選定的服務器名。

  通過以上兩種方法皆可達到連接目的,前者簡潔但有很大局限性,當數(shù)據(jù)服務器名稱發(fā)生變化時,必須修改源代碼,很不方便。后者既有較強的操作性又很直觀。在筆者開發(fā)的科技檔案管理系統(tǒng)采用了第二種方法。
數(shù)據(jù)的上傳

  數(shù)據(jù)的上傳就是將檔案文件存儲到數(shù)據(jù)表中。在數(shù)據(jù)上傳時,因情況不同一般有兩種方式,即單一上傳和批量上傳,前者指一次上傳一個文件(在數(shù)據(jù)表中增加一條記錄),后者指一次將一個文件夾中的所有文件上傳到數(shù)據(jù)庫。兩者在實質(zhì)上是統(tǒng)一的,批量上傳時,只需用一個循環(huán)語句就可。以下介紹單一上傳的過程。

  1、打開數(shù)據(jù)表

  通過以下語句打開數(shù)據(jù)表:

->dimoffice_rstAsNewADODB.Recordset
adocon.CursorLocation=adUseClient
office_rst.Open"office",adocon,adOpenDynamic,adLockOptimistic,adCmdTable->

  2、添加新記錄并上傳文件

  假定通過一些操作已經(jīng)獲得了要上傳的文件路徑和名稱(例如,可利用CommomDialog控件獲得),保存在string型變量filePath中。上傳的關(guān)鍵語句如下:

->dimadofldAsADODB.Field,DataArr()AsByte,filelenAsLong,file_numAsLong
office_rst.AddNew
Setadofld=office_rst("office")
adorst("filename").Value=filePath
file_num=FreeFile'返回一個Integer,代表下一個可供Open語句使用的文件號
OpenfilePathForBinaryaccessReadAsfile_num'打開磁盤文件
filelen=LOF(file_num)'求文件長度
ReDimDataArr(filelen)'根據(jù)文件長度定義動態(tài)數(shù)組大小
Getsourcefile,,DataArr'將一個已打開的磁盤文件讀入數(shù)組變量之中
adofld.AppendChunkDataArr()'將數(shù)組內(nèi)容存入image型字段中
Closefile_num'關(guān)閉磁盤文件
adorst.update->

  其中的filename為表office中的一個string型字段,用于存儲檔案文件的名稱。

數(shù)據(jù)的下載

  在完成數(shù)據(jù)庫連接后不僅可以對數(shù)據(jù)庫進行文件上傳的操作,還可以很方便的進行下載(瀏覽)。通過WebBrowser控件可瀏覽各種類型的文件。

  1、WebBrowser控件

  WebBrowser控件使應用程序增加了瀏覽功能,利用它可瀏覽常見的一些文件格式,如Office、CAD、BMP、JEG等。包含了WebBrowser控件的應用程序不僅可以對本機上的文件,還可以對局域網(wǎng)甚至世界網(wǎng)絡范圍內(nèi)的文件進行瀏覽。

  WebBrowse控件有很多方法,但這里只用到了"Navigate"方法,Navigate方法就是通過一個文件的全路徑去訪問這個文件,具體用法為:
WebBrowOff.NavigateURL

  其中WebBrowOff是一個WebBrowser控件,URL是必需的string型參數(shù),它可以是表示在Internet的WWW服務程序上用于指定信息位置的字符串,也可以是一個全路徑或者是對要瀏覽的文件通過通用命名標準命名的位置和名稱。

  2、文件數(shù)據(jù)的下載

  在程序中可利用DataList控件列出數(shù)據(jù)庫中保存的文件的名稱,下載的思路為:首先定位要下載的文件所在的記錄;然后將文件的內(nèi)容賦給一個數(shù)組,并寫入一個二進制文件;最后將該文件路徑、文件名傳給WebBrowser控件。

  關(guān)鍵代碼如下所示:

->dimFileArr()AsByte,currentasstring
filelen=office_rst.Fields("office").ActualSize'得到office字段中的文件數(shù)據(jù)的大小
ReDimFileArr(filelen)
FileArr()=office_rst.Fields("office").GetChunk(filelen)'將字段中數(shù)據(jù)寫入動態(tài)數(shù)組中
bufferfile=FreeFile
Open"tempfile"ForBinaryAccessReadWriteAsbufferfile'打開一個臨時文件
Putbufferfile,,F(xiàn)ileArr'將動態(tài)數(shù)組FileArr中的數(shù)據(jù)寫入臨時文件tempfile中
current=CurDir&"/tempfile"'獲取臨時文件的全路徑
WebBrowOff.Navigatecurrent'在WebBrowser控件中顯示文件內(nèi)容->

  以上代碼中未定義的變量與前述相同。

結(jié)束語

  現(xiàn)在很多單位檔案資料數(shù)據(jù)類型繁多,有OFFICE文檔、純文本、圖片資料以及包含基礎(chǔ)地形圖、現(xiàn)狀專題圖、規(guī)劃設計成果圖等多種圖件的AUTOCAD文件,并且數(shù)據(jù)量巨大,文件數(shù)目極多,利用本文介紹的方法可以方便的對數(shù)據(jù)庫各種數(shù)據(jù)進行查看、上傳、下載操作,方便了有大量檔案資料的單位對資料的管理。->


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 班戈县| 海淀区| 镇远县| 马关县| 拉萨市| 马关县| 灵丘县| 衡东县| 石柱| 武汉市| 鲁甸县| 大荔县| 太保市| 马边| 惠安县| 崇州市| 四会市| 和林格尔县| 丰县| 萨嘎县| 舒城县| 独山县| 安达市| 合川市| 曲水县| 江油市| 兴宁市| 思南县| 公安县| 阳信县| 大洼县| 营口市| 温州市| 监利县| 浑源县| 永嘉县| 克东县| 宁陵县| 浪卡子县| 合阳县| 威宁|