科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件VB实现文件数据对SQL Server上传下载

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文中论述了用VB编程实现文件数据对SQL Server数据库的上传和下载操作的关键技术

作者:刘兴权 陈奇 谢树春 来源:计算机信息技术 2007年10月14日

关键字: VB 文件数据 SQL Server 上传下载

  • 评论
  • 分享微博
  • 分享邮件
摘 要:文件数据指存储在数据库中的各种文件,文中论述了用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、利用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的内容即为选定的服务器名。

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

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章