⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vb&sqlserver.txt

📁 VB 和SQL数据库的各种操作!初学者必备
💻 TXT
📖 第 1 页 / 共 2 页
字号:
                用EstablishConnection方法的一个实例。 
              这里以独立的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 
              (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。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -