科技行者

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

知识库

知识库 安全导航

至顶网软件频道VB访问SQL Server数据库技术全揭密

VB访问SQL Server数据库技术全揭密

  • 扫一扫
    分享文章到微信

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

本文讨论了Visual Basic应用程序访问SQL Server数据库的几种常用的方法,分别说明了每种方法的内部机理并给出了每种方法的一个简单的实例,最后比较了每种方法性能和优缺点。

作者:佚名 来源:电子技术 2007年10月14日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共3页)

5、ADO 数据对象(Active Data Objects)

  ADO是基于全新的OLE DB技术,OLE DB可对电子邮件、文本文件、复合文件、数据表等各种各样的数据通过统一的接口进行存取。随着ActiveX控件的升级(Windows 98的ActiveX 5.0),RDO将被以ActiveX技术为基础的ADO接口所替代。下面将介绍基于ActiveX技术的ADO访问SQL Server 6.5数据库的技术和方法。基于浏览器的ADO接口常用函数如下:

  (1)取当前的工作数据库

  由于管理任务一般都必须在Master库中完成,因此在执行管理任务之前,最好保存当前工作库,以便完成任务之后再切换回原来的任务。  

Public Function SQLGetCurrentDatabaseName(Cn As ADODB.Connection) As String
 Dim sSQL As String
 Dim RS As New ADODB.Recordset
 On Error GoTo errSQLGetCurrentDatabaseName
 sSQL="select CurrentDB=DB_NAME ( )"
 RS.Open sSQL, Cn
 SQLGetCurrentDatabaseName=Trim $ (RS! CurrentDB)
 RS.Close
 Exit Function
 errSQLGetCurrentDatabaseName:
 SQLGetCurrentDatabaseName=" "
End Function  

  (2)取SQL Server安装目录下的DATA子目录路径

  取SQL Server的设备文件缺省目录,返回如D:MSSQL DATA。  

Public Function SQLGetDataPath(Cn As ADODB.Connection) As String
 Dim sSQL As String
 Dim RS As New ADODB.Recordset
 Dim sFullPath As String
 On Error GoTo errSQLGetDataPath
 sSQL="select phyname from master..sysdevices where name=注释:master注释: "
 RS.Open sSQL, Cn
 sFullPath = RS! phyname
 RS.Close
 SQLGetDataPath=Left $ (sFullPath, Len(sFullPath) -10) 注释:MASTER.DAT的大小
  Exit Function
 errSQLGetDataPath:
 SQLGetDataPath=" "
End Function
  
  (3)创建一个新数据库  

Public Function SQLCreateDatabase65 (Cn As ADODB.Connection,sDBName As String, sDataDeviceName As String, nDataSize As Integer, Optional sLogDeviceName, Optional nLogSize) As Boolean

 Dim sSQL As String
 On Error GoTo errSQLCreateDatabase65
 Dim sDB As String
 sDB =SQLGetCurrentDatabaseName(Cn)
 sSQL = "USE master"
 Cn.Execute sSQL
 sSQL ="CREATE DATABASE" & sDBName
 sSQL = sSQL &" ON " & sDataDeviceName & "=" & nDataSize
 If Not IsMissing(sLogDeviceName) And Not IsMissing(nLogSize) Then
  sSQL = sSQL & "LOG ON" & sLogDeviceName & "="& nLogSize
 End If
 Cn.Execute sSQL
 sSQL = "USE" & sDB
 Cn.Execute sSQL
 SQLCreateDatabase65 = True
 Exit Function
 errSQLCreateDatabase65:
 On Error Resume Next
 sSQL = "USE " & sDB
 Cn.Execute sSQL
 SQLCreateDatabase65 = False
End Function

  (4)判断一个数据库是否存在

Public Function SQLExistDatabase(Cn As ADODB.Connection, sDBName As String) As Boolean
 Dim sSQL As String
 Dim RS As New ADODB.Recordset
 Dim bTmp As Boolean
 on Error GoTo errSQLExistDatabase
 sSQL = "select CntDB = count ( * ) "
 sSQL = sSQL & "From master.dbo.sysdatabases"
 sSQL = sSQL & "Where name = 注释: "& sDBName & " 注释: "
 RS.Open sSQL, Cn
 If RS! CntDB = 0 Then bTmp = False Else bTmp = True
  RS.Close
  SQLExistDatabase = bTmp
  Exit Function
  errSQLExistDatabase:
  SQLExistDatabase = False
  Exit Function
 End Function  

  (5)删除一个数据库  

Public Function SQLDropDatabase (Cn As ADODB.Connection, sDBName As String) As Boolean
 Dim sSQL As String
 On Error GoTo errSQLDropDatabase
 If Not SQLExistDatabase(Cn, sDBName) Then
  SQLDropDatabase = True
   Exit Function
 End If
 Dim sDB As String
 sDB = SQLGetCurrentDatabaseName(Cn)
 sSQL = "Use master"
 Cn.Execute sSQL
 sSQL = "DROP DATABASE " & sDBName
 Cn.Execute sSQL
 sSQL = "USE " & sDB
 Cn.Execute sSQL
 SQLDropDatabase = True
 Exit Function
errSQLDropDatabase:
 On Error Resume Next
 sSQL = "USE " & sDB
 Cn.Execute sSQL
 SQLDropDatabase = False
End Function  

  三、性能比较及应用说明

  用VB开发基于SQL Server的数据库系统,以上几种访问SQL Server的方法各有各的特点。DAOs方法是基于对象的,因而便于使用,但是它是从Visual Basic到SQL Server最慢的连接方式。ODBC API和VBSQL方法从本质上讲是基于程序的。ODBC API方法通用性好,允许最强的互操作性,编程简单,但速度慢于VBSQL方法。VBSQL方法通过VBSQL控件,提供了重要的SQL Server前端应用程序所需的灵活性、强大功能和良好性能。它具有真正的事件驱动及错误处理能力,完全支持异步处理、游标和计算列等。这些都是VBSQL方法超出其它方法的优势,但其编程稍复杂。RDO是位于ODBC API之上的一个对象模型层,它依赖ODBC API、ODBC驱动程序以及后端数据库引擎来实现,用RDO所需的程序短小(约250 KB)、快速。RDO具备基本的ODBC处理方法,可直接执行大多数ODBC API函数,RDO包含在VB 4.0/VB 5.0企业版中,由MSRDO32.DLL动态连接库来实现。RDO是综合了DAO/Jet、VBSQL/DBLib和ODBC的优点的对象模型,包含ODBC API应用层,设计为在后台(服务器端)有数据库存在的前提下运行,是针对SQL Server和Oracle而特别设计的。RDO的优势在于它完全被集成在VB之中,可直接访问SQL Server存储过程、完全支持T-SQL、T-SQL调试集成在开发环境中、Visual Database Tools的集成化等。但微软已宣布今后不再对VBSQL/DBLib进行升级,而ODBC API函数一般的编程方式也不为人们所喜爱,RDO的应用将逐渐减少。至于实际使用哪一种接口方式,在很大程度上依赖于用户的应用程序的具体情况而定。  

  四、VisualBasic访问数据库的前景

  近来随着Web应用软件的迅速发展和现有数据存储形式的多种多样,Visual Basic访问数据库的解决方案面临诸如快速提取分布于企业内部和外部有用商业信息等的多种挑战。为此Microsoft提出一种新的数据库访问策略,即“统一数据访问”(UniversalDataAccess)的策略。“统一数据访问”提供了高性能的存取包括关系型和非关系型在内的多种数据源,提供独立于开发工具和开发语言的简单的编程接口,这些技术使得企业集成多种数据源、选择更好的开发工具、应用软件、操作平台、建立容易维护的解决方案成为可能。

  “统一数据访问”的基础是Microsoft的数据访问组件。这些组件包括ActiveXDataObjects(ADO)、RemoteDataService(RDS,也称“高级数据连接器或”ADC)、OLEDB和ODBC。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

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

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