用VB如何實(shí)現(xiàn)文件數(shù)據(jù)對(duì)SQL Server上傳下載

              本文以VisualBasic6.0和SQLServer2000環(huán)境下的數(shù)據(jù)庫(kù)為例,介紹文件數(shù)據(jù)對(duì)SQLServer2000數(shù)據(jù)庫(kù)的上傳和下載。

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

              數(shù)據(jù)庫(kù)的連接  對(duì)數(shù)據(jù)庫(kù)的操作一定在已經(jīng)與本地抑或是網(wǎng)絡(luò)數(shù)據(jù)庫(kù)建立了聯(lián)系的基礎(chǔ)上,建立連接這一需求可以通過兩種方式實(shí)現(xiàn)。  為便于理解,這里假定服務(wù)器名為Data_Server,檔案數(shù)據(jù)庫(kù)名為Science_File,其中的一個(gè)數(shù)據(jù)表名為office,設(shè)計(jì)有一個(gè)名稱為office、類型為Image的字段,用于保存文件。為便于將不同大小的文件存儲(chǔ)在SQLServer的數(shù)據(jù)表中,必須在數(shù)據(jù)表中創(chuàng)建一個(gè)Image型的字段,該字段可存儲(chǔ)的最大文件達(dá)2GB字節(jié)。  1、利用Adodc控件連接  VisualBasic提供了一個(gè)Adodc控件。它通過Adodc屬性的設(shè)置,按照向?qū)崾就瓿蓴?shù)據(jù)庫(kù)的連接。具體過程如下:  首先在屬性頁(yè)中選擇生成按鈕,進(jìn)入數(shù)據(jù)鏈接屬性對(duì)話框;然后選擇該對(duì)話框中的連接屬性頁(yè),選擇或輸入服務(wù)器名稱和數(shù)據(jù)庫(kù)等重要信息;最后測(cè)試連接,連接成功后,按確定按鈕,返回到屬性頁(yè)對(duì)話框,可獲得連接字符串,如下例:Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;Persist;SecurityInfo=False;InitialCatalog=Science_File;DataSource=Data_Server  通過下列語(yǔ)句,即可連接到指定的數(shù)據(jù)庫(kù):dimodbcstrasString,adoconAsNewADODB.Connectionodbcstr=Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;_InitialCatalog=Science_File;DataSource=Data_Serveradocon.Openodbcstr"連接到數(shù)據(jù)庫(kù)  2、利用NetServerEnum函數(shù)  該函數(shù)是一個(gè)API函數(shù),通過它可獲得一個(gè)安裝了SQLServer數(shù)據(jù)庫(kù)管理系統(tǒng)的服務(wù)器列表。方法如下:PrivateDeclareFunctionNetServerEnumLibnetapi32_(lpServerAsAny,ByVallLevelAsLong,vBufferAsAny,_lPreferedMaxLenAsLong,lEntriesReadAsLong,lTotalEntriesAsLong,_ByVallServerTypeAsLong,ByValsDomain$,vResumeAsAny)AsLongPrivateDeclareSubCopyMemoryLibkernel32AliasRtlMoveMemory(Destination_AsAny,SourceAsAny,ByValLengthAsLong)PrivateDeclareFunctionlstrlenWLibkernel32(ByVallpStringAsLong)AsLongPrivateTypeSV_100 platformAsLong nameAsLongEndTypedimsv100AsSV_100,nRetAsLong,iaslong,lServerInfoAsLongdimlServerInfoAsLong,lPreferedMaxLenAsLong,lEntriesReadAsLongdimlTotalEntriesAsLong,sDomainAsString,vResumeAsVariantdimbuffer()AsByte,nLenAsLonglPreferedMaxLen=65536nRet=NetServerEnum(0,101,lServerInfo,lPreferedMaxLen,lEntriesRead,lTotalEntries,4,sDomain,vResume)IfnRet=0ornRet=234Then Fori=0TolEntriesRead-1  CopyMemorysv100,ByVallServerInfo,Len(sv100)  nLen=lstrlenW(sv100.name)*2  IfnLenThen   ReDimbuffer(0To(nLen-1))AsByte   CopyMemorybuffer(0),ByValsv100.name,nLen  EndIf  Combo1.List(i)=buffer"服務(wù)器名  lServerInfo=lServerInfo+24 NextiEndIf  得到的服務(wù)器名通過Combo1控件顯示,可從中選擇儲(chǔ)存檔案數(shù)據(jù)的服務(wù)器名,再通過下列語(yǔ)句連接到選定服務(wù)器中的數(shù)據(jù)庫(kù):odbcstr=Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;_InitialCatalog=Science_File;DataSource=Form2.Combo1.Textadocon.Openodbcstr"連接到數(shù)據(jù)庫(kù)  其中的變量含義與前述相同,F(xiàn)orm2.Combol.Text的內(nèi)容即為選定的服務(wù)器名。  通過以上兩種方法皆可達(dá)到連接目的,前者簡(jiǎn)潔但有很大局限性,當(dāng)數(shù)據(jù)服務(wù)器名稱發(fā)生變化時(shí),必須修改源代碼,很不方便。后者既有較強(qiáng)的操作性又很直觀。在筆者開發(fā)的科技檔案管理系統(tǒng)采用了第二種方法。數(shù)據(jù)的上傳  數(shù)據(jù)的上傳就是將檔案文件存儲(chǔ)到數(shù)據(jù)表中。在數(shù)據(jù)上傳時(shí),因情況不同一般有兩種方式,即單一上傳和批量上傳,前者指一次上傳一個(gè)文件(在數(shù)據(jù)表中增加一條記錄),后者指一次將一個(gè)文件夾中的所有文件上傳到數(shù)據(jù)庫(kù)。兩者在實(shí)質(zhì)上是統(tǒng)一的,批量上傳時(shí),只需用一個(gè)循環(huán)語(yǔ)句就可。以下介紹單一上傳的過程。1、打開數(shù)據(jù)表  通過以下語(yǔ)句打開數(shù)據(jù)表:dimoffice_rstAsNewADODB.Recordsetadocon.CursorLocation=adUseClientoffice_rst.Openoffice,adocon,adOpenDynamic,adLockOptimistic,adCmdTable

              久久精品国产精品亚洲精品| 最新亚洲人成无码网站| 自拍偷自拍亚洲精品偷一| 亚洲av日韩av综合| 亚洲国产成人综合| 亚洲春色在线观看| 亚洲国产精品成人综合久久久| 91亚洲国产在人线播放午夜| 久久亚洲AV成人无码电影| 情人伊人久久综合亚洲| 国产亚洲成av人片在线观看| 亚洲日韩欧洲无码av夜夜摸| 亚洲色欲色欲www在线丝| 亚洲精品二区国产综合野狼| 亚洲国产精品一区第二页 | 中文字幕亚洲不卡在线亚瑟| 国产精品亚洲mnbav网站 | 亚洲日韩国产精品无码av| 亚洲经典在线中文字幕| 亚洲欧洲日本精品| 亚洲一级毛片在线播放| 一区二区亚洲精品精华液 | 亚洲丶国产丶欧美一区二区三区| 亚洲免费综合色在线视频| 亚洲国产成人综合精品| 亚洲精品国产综合久久久久紧| 亚洲av永久中文无码精品综合| 苍井空亚洲精品AA片在线播放 | 老司机亚洲精品影院无码| 亚洲欧洲国产综合| 日韩亚洲不卡在线视频中文字幕在线观看| 亚洲第一成人在线| 亚洲AV无码一区二区三区牲色 | 亚洲成A人片在线观看无码3D | 亚洲乱码日产精品BD在线观看| 亚洲一区欧洲一区| 亚洲av乱码一区二区三区按摩 | 亚洲成网777777国产精品| 亚洲综合精品香蕉久久网| 久久精品国产96精品亚洲| 亚洲综合区图片小说区|