专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »VB教程 » vbsqlserver:VB实现文件数据对SQL Server上传下载 »正文

vbsqlserver:VB实现文件数据对SQL Server上传下载

来源: 发布时间:星期五, 2008年12月26日 浏览:2次 评论:0
  摘 要:文件数据指存储在数据库中各种文件文中论述了用VB编程实现文件数据对SQL Server数据库上传和下载操作关键技术并以SQL Server 2000环境下数据库为例用Visual Basic设计语言给出了关键代码

  关键词:Visual Basic数据库SQL Server上传下载

  前言

  很多单位尤其是制造业、设计院计算机应用开展较早在这些单位各种法规文件下达以及日常工作中产生大量数据形成了种类繁杂、数量庞大档案资料(各种文件)面对海量数据原有档案管理系统在进行数据备份、还原、更新和维护时多数已力不从心传统基于文件管理方式还给各种档案保密工作带来了隐患为此越来越多单位开始开发基于数据库文件档案管理系统以期克服这些毛病

  结合笔者开发科技档案管理系统本文以Visual Basic6.0和SQL Server 2000环境下数据库为例介绍文件数据对SQL Server 2000数据库上传和下载

  数据库连接

  对数据库操作定在已经和本地抑或是网络数据库建立了联系基础上建立连接这需求可以通过两种方式实现

  为便于理解这里假定服务器名为Data_Server档案数据库名为Science_File其中个数据表名为office设计有个名称为office、类型为Image字段用于保存文件为便于将区别大小文件存储在SQL Server数据表中必须在数据表中创建个Image型字段该字段可存储最大文件达2GB字节

  1、利用AdodcControl控件连接

  Visual Basic提供了个AdodcControl控件它通过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 sDo$, 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, sDo As String, vResume As Variant
dim buffer As Byte, nLen As Long
lPreferedMaxLen = 65536
nRet = NetServerEnum(0, 101, lServerInfo, lPreferedMaxLen, lEntriesRead, lTotalEntries, 4, sDo, 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

  得到服务器名通过Combo1Control控件显示可从中选择储存档案数据服务器名再通过下列语句连接到选定服务器中数据库:

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内容即为选定服务器名

  通过以上两种思路方法皆可达到连接目前者简洁但有很大局限性当数据服务器名称发生变化时必须修改源代码很不方便后者既有较强操作性又很直观在笔者开发科技档案管理系统采用了第 2种思路方法

 数据上传

  数据上传就是将档案文件存储到数据表中在数据上传时因情况区别般有两种方式即单上传和批量上传前者指次上传个文件(在数据表中增加条记录)后者指次将个文件夹中所有文件上传到数据库两者在实质上是统批量上传时只需用个循环语句就可以下介绍单上传过程

  1、打开数据表

  通过以下语句打开数据表:

dim office_rst As New ADODB.Record
adocon.CursorLocation = adUseClient
office_rst.Open "office", adocon, adOpenDynamic, adLockOptimistic, adCmdTable

  2、添加新记录并上传文件

  假定通过些操作已经获得了要上传文件路径和名称(例如可利用CommomDialogControl控件获得)保存在型变量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中型字段用于存储档案文件名称

  数据下载

  在完成数据库连接后不仅可以对数据库进行文件上传操作还可以很方便进行下载(浏览)通过Web BrowserControl控件可浏览各种类型文件

  1、WebBrowserControl控件

  WebBrowserControl控件使应用增加了浏览功能利用它可浏览常见些文件格式如Office、CAD、BMP、JEG等包含了WebBrowserControl控件应用不仅可以对本机上文件还可以对局域网甚至世界网络范围内文件进行浏览

  WebBrowseControl控件有很多思路方法但这里只用到了"Navigate"思路方法Navigate思路方法就是通过个文件全路径去访问这个文件具体使用方法为:
WebBrowOff.Navigate URL

  其中WebBrowOff 是个WebBrowserControl控件URL是必需型参数它可以是表示在InternetWWW服务上用于指定信息位置也可以是个全路径或者是对要浏览文件通过通用命名标准命名位置和名称

  2、文件数据下载

  在中可利用DataListControl控件列出数据库中保存文件名称下载思路为:首先定位要下载文件所在记录;然后将文件内容赋给并写入个 2进制文件;最后将该文件路径、文件名传给WebBrowserControl控件

  关键代码如下所示:

dim FileArr As Byte, current as
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 '在WebBrowserControl控件中显示文件内容

  以上代码中未定义变量和前述相同

  结束语

  现在很多单位档案资料数据类型繁多有OFFICE文档、纯文本、图片资料以及包含基础地形图、现状专题图、规划设计成果图等多种图件AUTOCAD文件并且数据量巨大文件数目极多利用本文介绍思路方法可以方便对数据库各种数据进行查看、上传、下载操作方便了有大量档案资料单位对资料管理

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: