手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>VB>列表

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

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

  Cn.Excute "use pubs"

  End Sub  

  RDO连接处理结束后,在该事件中确认连接成功与否。连接成功的情况下ErrorOccurred返回False,失败时为True,由此可以对rdoErrors集合进行检测:  

  Private Sub Eng_InfoMessage()

  For Each er In rdoErrors

  Debug.Print er

  Next

  RdoErrors.Clear

  End Sub  

  不能与SQL Server连接的原因多种多样,有可能是由于对数据库的访问权限、网络连接问题、数据库表的信息错误、SQL Server同时连接的许可数、资源不足等等,具体情况需要与网络管理员商量。 断开连接的操作非常简单,但又很重要,因为RDO不提供自动断开的功能。  

  Cn.Close

  Set Cn = Nothing 注释:释放对象所占的内存资源

  En.Close

  Set En = Nothing 注释:释放对象所占的内存资源  

  VB是对象语言,Form、ActiveX控件也都是对象。使用对象后必须养成将对象设为Nothing把它从内存中释放的编程习惯。这样可以预防很多不可预测错误,往往程序中发生原因不明的错误时,其原因就在于此。  

  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

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!