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

欧美成人aaaaa免费视频_亚洲欧美激情小说另类_欧美激情一区二区三区视频_一级在线|欧洲

技術頻道

VB實現文件數據對SQL Server上傳下載

VB實現文件數據對SQL Server上傳下載
 很多單位尤其是制造業、設計院,計算機應用開展的較早。在這些單位,各種法規文件的下達以及日常工作中產生的大量數據,形成了種類繁雜、數量龐大檔案資料(各種文件)。面對海量數據,原有檔案管理系統在進行數據的備份、還原、更新與維護時多數已力不從心。傳統的基于文件的管理方式,還給各種檔案的保密工作帶來了隱患。為此,越來越多的單位開始開發基于數據庫的文件檔案管理系統,以期克服這些毛病。
  本文以Visual Basic6.0和SQL Server 2000環境下的數據庫為例,介紹文件數據對SQL Server 2000數據庫的上傳和下載。
數據庫的連接
  對數據庫的操作一定在已經與本地抑或是網絡數據庫建立了聯系的基礎上,建立連接這一需求可以通過兩種方式實現。
  為便于理解,這里假定服務器名為Data_Server,檔案數據庫名為Science_File,其中的一個數據表名為office,設計有一個名稱為office、類型為Image的字段,用于保存文件。為便于將不同大小的文件存儲在SQL Server的數據表中,必須在數據表中創建一個Image型的字段,該字段可存儲的最大文件達2GB字節。
  1、利用Adodc控件連接
  Visual Basic提供了一個Adodc控件。它通過Adodc屬性的設置,按照向導提示完成數據庫的連接。具體過程如下:
  首先在屬性頁中選擇生成按鈕,進入數據鏈接屬性對話框;然后選擇該對話框中的連接屬性頁,選擇或輸入服務器名稱和數據庫等重要信息;最后測試連接,連接成功后,按確定按鈕,返回到屬性頁對話框,可獲得連接字符串,如下例:
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist;Security Info=False;Initial Catalog=Science_File;Data Source=Data_Server
  通過下列語句,即可連接到指定的數據庫:
dim odbcstr as String, adocon As New ADODB.Connection
odbcstr = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;_
Initial Catalog=Science_File;Data Source=Data_Server"
adocon.Open odbcstr '連接到數據庫
  2、利用NetServerEnum函數
  該函數是一個API函數,通過它可獲得一個安裝了SQL Server數據庫管理系統的服務器列表。方法如下:
Private Declare Function NetServerEnum Lib "netapi32" _
(lpServer As Any, ByVal lLevel As Long, vBuffer As Any, _
lPreferedMaxLen As Long, lEntriesRead As Long, lTotalEntries As Long, _
ByVal lServerType As Long, ByVal sDomain$, vResume As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination _
As Any, Source As Any, ByVal Length As Long)
Private Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As Long

Private Type SV_100
 platform As Long
 name As Long
End Type
dim sv100 As SV_100, nRet As Long, i as long, lServerInfo As Long
dim lServerInfo As Long, lPreferedMaxLen As Long, lEntriesRead As Long
dim lTotalEntries As Long, sDomain As String, vResume As Variant
dim buffer() As Byte, nLen As Long
lPreferedMaxLen = 65536
nRet = NetServerEnum(0, 101, lServerInfo, lPreferedMaxLen, lEntriesRead, lTotalEntries, 4, sDomain, vResume)
If nRet = 0 or nRet = 234& Then
 For i = 0 To lEntriesRead - 1
  CopyMemory sv100, ByVal lServerInfo, Len(sv100)
  nLen = lstrlenW(sv100.name) * 2
  If nLen Then
   ReDim buffer(0 To (nLen - 1)) As Byte
   CopyMemory buffer(0), ByVal sv100.name, nLen
  End If
  Combo1.List(i) = buffer '服務器名
  lServerInfo = lServerInfo + 24
 Next i
End If
  得到的服務器名通過Combo1控件顯示,可從中選擇儲存檔案數據的服務器名,再通過下列語句連接到選定服務器中的數據庫:
odbcstr = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;_
Initial Catalog=Science_File;Data Source=" & Form2.Combo1.Text
adocon.Open odbcstr '連接到數據庫
  其中的變量含義與前述相同,Form2.Combol.Text的內容即為選定的服務器名。
  通過以上兩種方法皆可達到連接目的,前者簡潔但有很大局限性,當數據服務器名稱發生變化時,必須修改源代碼,很不方便。后者既有較強的操作性又很直觀。在筆者開發的科技檔案管理系統采用了第二種方法。
數據的上傳
  數據的上傳就是將檔案文件存儲到數據表中。在數據上傳時,因情況不同一般有兩種方式,即單一上傳和批量上傳,前者指一次上傳一個文件(在數據表中增加一條記錄),后者指一次將一個文件夾中的所有文件上傳到數據庫。兩者在實質上是統一的,批量上傳時,只需用一個循環語句就可。以下介紹單一上傳的過程。
  1、打開數據表
  通過以下語句打開數據表:
dim office_rst As New ADODB.Recordset
adocon.CursorLocation = adUseClient
office_rst.Open "office", adocon, adOpenDynamic, adLockOptimistic, adCmdTable
  2、添加新記錄并上傳文件
  假定通過一些操作已經獲得了要上傳的文件路徑和名稱(例如,可利用CommomDialog控件獲得),保存在string型變量filePath中。上傳的關鍵語句如下:
dim adofld As ADODB.Field, DataArr() As Byte, filelen As Long, file_num As Long
office_rst.AddNew
Set adofld = office_rst("office")
adorst("filename").Value = filePath
file_num = FreeFile '返回一個 Integer,代表下一個可供Open語句使用的文件號
Open filePath For Binary Access Read As file_num '打開磁盤文件
filelen = LOF(file_num) '求文件長度
ReDim DataArr(filelen) '根據文件長度定義動態數組大小
Get sourcefile, , DataArr '將一個已打開的磁盤文件讀入數組變量之中
adofld.AppendChunk DataArr() '將數組內容存入image型字段中
Close file_num '關閉磁盤文件
adorst.update
  其中的filename為表office中的一個string型字段,用于存儲檔案文件的名稱。
  數據的下載
  在完成數據庫連接后不僅可以對數據庫進行文件上傳的操作,還可以很方便的進行下載(瀏覽)。通過Web Browser控件可瀏覽各種類型的文件。
  1、WebBrowser控件
  WebBrowser控件使應用程序增加了瀏覽功能,利用它可瀏覽常見的一些文件格式,如Office、CAD、BMP、JEG等。包含了WebBrowser控件的應用程序不僅可以對本機上的文件,還可以對局域網甚至世界網絡范圍內的文件進行瀏覽。
  WebBrowse控件有很多方法,但這里只用到了"Navigate"方法,Navigate方法就是通過一個文件的全路徑去訪問這個文件,具體用法為:
WebBrowOff.Navigate URL
  其中WebBrowOff 是一個WebBrowser控件,URL是必需的string型參數,它可以是表示在Internet的WWW服務程序上用于指定信息位置的字符串,也可以是一個全路徑或者是對要瀏覽的文件通過通用命名標準命名的位置和名稱。
  2、文件數據的下載
  在程序中可利用DataList控件列出數據庫中保存的文件的名稱,下載的思路為:首先定位要下載的文件所在的記錄;然后將文件的內容賦給一個數組,并寫入一個二進制文件;最后將該文件路徑、文件名傳給WebBrowser控件。
  關鍵代碼如下所示:
dim FileArr () As Byte, current as string
filelen = office_rst.Fields("office").ActualSize '得到office字段中的文件數據的大小
ReDim FileArr(filelen)
FileArr() = office_rst.Fields("office").GetChunk(filelen) '將字段中數據寫入動態數組中
bufferfile = FreeFile
Open "tempfile" For Binary Access Read Write As bufferfile '打開一個臨時文件
Put bufferfile, ,FileArr '將動態數組FileArr中的數據寫入臨時文件tempfile中
current = CurDir & "\tempfile" '獲取臨時文件的全路徑
WebBrowOff.Navigate current '在WebBrowser控件中顯示文件內容
  以上代碼中未定義的變量與前述相同。
  結束語
  現在很多單位檔案資料數據類型繁多,有OFFICE文檔、純文本、圖片資料以及包含基礎地形圖、現狀專題圖、規劃設計成果圖等多種圖件的AUTOCAD文件,并且數據量巨大,文件數目極多,利用本文介紹的方法可以方便的對數據庫各種數據進行查看、上傳、下載操作,方便了有大量檔案資料的單位對資料的管理.

文章版權歸西部工控xbgk所有,未經許可不得轉載。

欧美成人aaaaa免费视频_亚洲欧美激情小说另类_欧美激情一区二区三区视频_一级在线|欧洲

      9000px;">

          欧美一级艳片视频免费观看| av午夜精品一区二区三区| 色综合天天综合网国产成人综合天 | 欧美一区二区大片| 国产精品私人影院| 日本系列欧美系列| 欧美精品xxxxbbbb| 亚洲午夜激情网页| 日本韩国精品在线| 亚洲欧洲制服丝袜| 国产精品正在播放| 欧美日韩一卡二卡三卡 | 91在线云播放| 欧美极品aⅴ影院| 免费黄网站欧美| 亚洲欧美色图小说| 成人午夜av电影| 久久婷婷国产综合国色天香| 成人午夜免费视频| 色国产精品一区在线观看| 欧美日韩精品一区二区三区| 久久久久国产精品厨房| 亚洲免费观看视频| 欧美一区二区三区免费| 久久99精品一区二区三区| 26uuu色噜噜精品一区| 国产呦精品一区二区三区网站| 亚洲va国产va欧美va观看| 亚洲免费在线观看视频| 狠狠色综合日日| 性欧美大战久久久久久久久| 日韩久久久精品| 成人黄色网址在线观看| 最新高清无码专区| 99久久精品免费看| 色综合欧美在线| 青青草一区二区三区| 国产精品理论在线观看| 亚洲第一成人在线| 欧美大片国产精品| 国产乱码一区二区三区| 亚洲欧美激情插| 欧美日韩亚洲不卡| 国产精品亚洲成人| 日韩精品欧美精品| 久久久蜜桃精品| 91麻豆swag| 亚洲妇女屁股眼交7| 日韩久久免费av| 一本大道av伊人久久综合| 26uuu国产一区二区三区| 91天堂素人约啪| 亚洲综合一区在线| 日韩视频一区在线观看| 99精品偷自拍| 亚洲精品高清在线| 欧美综合久久久| 精品一区二区三区在线播放视频| 亚洲愉拍自拍另类高清精品| 国产亚洲短视频| 一区二区视频免费在线观看| 欧美精品精品一区| 成人一二三区视频| 视频一区在线视频| 蜜桃视频在线一区| 亚洲成人免费影院| 国产精品久久久久久久蜜臀| 日本一区二区动态图| 欧美一区三区二区| 日本韩国一区二区三区视频| 国产激情偷乱视频一区二区三区| 精品视频一区三区九区| 在线视频国内自拍亚洲视频| 成人三级在线视频| 国产大陆a不卡| 青青草伊人久久| 亚洲一区在线免费观看| 国产精品欧美极品| 日韩精品影音先锋| 欧美一区二区三区在线观看视频 | 精品视频全国免费看| 国产成人av电影在线观看| 99久久精品国产麻豆演员表| 精品国产网站在线观看| 日韩亚洲欧美一区| 国产精品久久久99| 国产精品你懂的在线欣赏| 奇米色一区二区三区四区| 国产视频在线观看一区二区三区| 欧洲一区二区三区在线| 成人美女视频在线看| 亚洲福利视频一区二区| 老司机精品视频导航| 久久99精品久久久| 国产一区在线看| 久久99精品网久久| 中文字幕精品一区| 欧美日韩黄色影视| 大白屁股一区二区视频| 91美女视频网站| 在线免费观看日韩欧美| 欧美日韩国产大片| 国产日韩精品一区二区三区| 久久久一区二区| 亚洲乱码国产乱码精品精小说| 亚洲激情图片小说视频| 午夜激情一区二区三区| 午夜在线电影亚洲一区| 精品无码三级在线观看视频| 懂色一区二区三区免费观看 | 日韩成人伦理电影在线观看| 日韩二区三区在线观看| 日韩影院精彩在线| 韩国三级电影一区二区| 国产一区久久久| 色偷偷一区二区三区| 精品乱码亚洲一区二区不卡| 一区二区三区四区激情| 粉嫩一区二区三区在线看| 日韩欧美国产成人一区二区| 欧美喷潮久久久xxxxx| 欧美日韩视频在线一区二区| 在线电影院国产精品| 亚洲乱码日产精品bd| 国产成人综合亚洲网站| 色综合久久六月婷婷中文字幕| 精品久久免费看| 亚洲欧美在线另类| 中文字幕佐山爱一区二区免费| 在线观看视频一区二区欧美日韩| 69堂成人精品免费视频| 18成人在线视频| 久久久久久久久久久久久女国产乱| 一区二区三区日韩欧美| 风间由美中文字幕在线看视频国产欧美| 欧美性欧美巨大黑白大战| 国产亲近乱来精品视频 | 欧美天堂一区二区三区| 欧美一区二区网站| 亚洲乱码日产精品bd| 中文字幕日韩精品一区| 美女www一区二区| 色哟哟国产精品免费观看| 国产精品亲子伦对白| 欧美国产国产综合| 日韩成人一级片| 制服视频三区第一页精品| 国产精品久久久久久久久久免费看 | 在线视频国内一区二区| 国产色91在线| 久久久久久99久久久精品网站| 调教+趴+乳夹+国产+精品| 成人免费毛片aaaaa**| 成人精品视频一区二区三区| 国产欧美视频在线观看| 97精品久久久久中文字幕| 在线视频欧美区| 欧美r级电影在线观看| 一个色妞综合视频在线观看| 无码av免费一区二区三区试看 | 国产成人午夜99999| 亚洲国产精品久久久男人的天堂| 99久久精品99国产精品| 欧美经典一区二区| 欧美一区二区三区免费| 免费欧美在线视频| 91久久线看在观草草青青| 亚洲欧美福利一区二区| 视频一区视频二区中文| 欧美精品一卡二卡| 国产精品福利电影一区二区三区四区| av激情成人网| 在线观看免费一区| 香港成人在线视频| 欧美激情一区二区三区在线| 亚洲国产乱码最新视频 | 国产亚洲欧美日韩日本| 亚洲第一成人在线| 亚洲一二三四区| 91在线免费播放| 欧美精品一区二区三区四区| 国产精品欧美综合在线| 青青青爽久久午夜综合久久午夜| av在线综合网| 免费成人你懂的| 国产欧美一区二区精品忘忧草| 国产三级精品三级在线专区| 午夜激情久久久| 欧美最猛性xxxxx直播| 制服丝袜成人动漫| 国产精品 日产精品 欧美精品| 亚洲电影第三页| 粉嫩一区二区三区性色av| 精品国产乱码久久久久久久久 | 中文字幕在线不卡一区| 久久成人精品无人区| 日韩码欧中文字| 成人精品视频.| 亚洲人成精品久久久久久| 不卡免费追剧大全电视剧网站|