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
相关文章
读者评论
发表评论 |