用户名: 密码: 免费注册 忘记密码? 网站地图 | 加入收藏 | 设为首页
首页 | 新闻 | 工具 | 系统 | 办公 | 聊天 | 多媒体 | 网页 | 运营 | 平面 | 欣赏 | 数据库 | 程序 | 服务器 | 组网
网页 | 3dmax | Ghost | Windows Xp| Dreamweaver | photoshop | Flash | office | Alexa | Css | QQ | Asp | PHP | Jsp | Access
Flash MX 2004入门 | 网站推广策略 | CorelDRAW入门 | ASP学习 | 网站建设大师功 | Word入门
  iTbulo.com > 学院 > 程序开发教程 > Visual Basic教程 > Visual Basic开发技巧 > 文章正文
VB访问SQL Server数据库技术全揭密
iTbulo.COM 2006-8-3 天极网()


  这里以独立的rdoConnection对象为例说明与SQL Server的连接。
  
Public WithEvents Eng As rdoEngine
Public WithEvents Cn As rdoConnection

Private Sub Form_Load()
 Set Eng = New rdoEngine
 Set Cn = New rdoConnection
 With Cn
  .Connect = "UID = ; PWD = ;" & "DATABASE = pubs; DSN = biblio"
  .LoginTimeout = 5
  .EstablishConnection rdoDriverNoPromt, True, rdAsyncEna ble
 End With
End Sub 
 
  在这个例子中,Form_Load函数对rdoEngine和rdoConnection对象进行初始化。这里有一点需要注意,rdoConnection对象是处于独立的状态之下,即使是处于未连接状态也可以设置属性的值。接下来是rdoConnect对象的事件处理程序。从RDO 2.0起可以实现异步方式(rdAsyn cEnable),EstablishConnection就设定为该值。在异步状态下,不必等待与数据库的连接,程序可以迅速从Form_Load 函数中退出。 然后是BeforeConnect事件,该处理在与数据库的连接开始以前被激发,此时不能进行有关终止连接的操作:  

Private Sub Cn_BeforeConnect(ConnetString As String, Pro mpt As Variant)
 MsgBox "正在连接" & ConnectString, vbOKOnly, "连接前"
End Sub

  连接完成之后的事件处理:

Private Sub Cn_Connect(ByVal ErrorOccurred As Boolean)
 Dim M As String
 If ErrorOccurred Then
  For Each er In rdoErrors
   M = M & er & vbCrLf & M
  Next
  MsgBox "连接失败" & vbCrLf & M
 Else
  MsgBox "连接成功"
  注释:这是确认连接状态的测试代码
 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

上一页  [1] [2] [3] [4] 下一页

文章搜索
相关资讯
相关文章 相关下载
Visual Basic中实现带预览的对话框
用Visual Basic实现点对点通讯
在vb中删除带子文件夹的文件夹
教你在VB中操作DataGrid视图
VB6 ADO ListView数据库分页显示
焦点信息