VB应用程序访问SQL Server的常用方法(3)

作者:doorsir 时间:2009-01-21 14:28:00 

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 & " 注释: "

5 vb与sql

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)的策略。“统一数据访问”提供了高性能的存取包括关系型和非关系型在内的多种数据源,提供独立于开发工具和开发语言的简单的编程接口,这些技术使得企业集成多种数据源、选择更好的开发工具、应用软件、操作平台、建立容易维护的解决方案成为可能。

标签:
0
投稿

猜你喜欢

  • js处理括弧配对替换的方法

    2008-01-16 13:48:00
  • PyQt5 在label显示的图片中绘制矩形的方法

    2021-02-02 08:50:45
  • 通过不同的CSS设计字体大小来提高用户体验

    2008-12-10 19:17:00
  • Vue 服务端渲染SSR示例详解

    2024-05-28 15:50:39
  • python3爬虫获取html内容及各属性值的方法

    2021-08-23 02:37:33
  • CSS元素类型

    2009-04-27 12:25:00
  • Python解析m3u8拼接下载mp4视频文件的示例代码

    2022-04-22 13:20:16
  • 基于Python中numpy数组的合并实例讲解

    2023-01-23 18:17:26
  • 浅谈python可视化包Bokeh

    2021-10-23 21:07:54
  • python网络编程学习笔记(四):域名系统

    2021-07-15 10:16:49
  • 详解python tkinter模块安装过程

    2021-05-18 04:19:38
  • 基于Python3.6中的OpenCV实现图片色彩空间的转换

    2022-05-20 14:03:13
  • Golang并发利器sync.Once的用法详解

    2024-04-25 15:12:06
  • pymssql ntext字段调用问题解决方法

    2022-04-22 06:55:06
  • fullcalendar日程管理插件月份切换回调处理方案

    2024-05-09 15:25:55
  • 功能和外观都还不错的js版幻灯片效果

    2007-08-05 12:20:00
  • MySQL因大事务导致的Insert慢实例分析

    2024-01-22 22:07:54
  • MySQL中易被我们忽略的细节

    2024-01-21 09:54:48
  • vue使用el-upload上传文件及Feign服务间传递文件的方法

    2024-04-28 10:54:45
  • MySQL常用命令与内部组件及SQL优化详情

    2024-01-17 12:50:41
  • asp之家 网络编程 m.aspxhome.com