科技行者

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

知识库

知识库 安全导航

至顶网软件频道用VB和RDO访问SQL SERVER

用VB和RDO访问SQL SERVER

  • 扫一扫
    分享文章到微信

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

远程数据对象 (Remote Data Object ,简称RDO) 是位于 ODBC API 之上的一个对象模型薄层。

作者:佚名 来源:论坛 2007年10月23日

关键字: SQL Server

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

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

RDO的对象模块

  要正确地使用RDO,有必要对其对象模块结构加以理解。在RDO的对象和集合中,有很多对数据库的状态和设定进行操作的属性(Property),以及对数据库进行操作的方法(Method)。利用这些,从RDO2.0起就可以开发事件驱动的数据库应用程序。 RDO对象与VB中其他对象的概念相同。与VB用的ActiveX控件(以往称为Custom Control 或OCX、VBX)相似的是,RDO也带有属性和方法;但同Spread、InputMan等普遍应用的Activ eX控件不同的是,RDO没有自己的用户界面,因而可以和VB标准的Timer控件归为同一类。当然也可以将RDO看作调用ODBC API函数,进而对后台数据库操作加以控制的对象。在RDO的属性和方法中,包含了对单个的ODBC API函数以及一连串API函数的调用。

  1. rdoEngine对象 最初调用RDO对象以及RDC(远程数据控件)时,自动生成rdoEngine对象的附带事件(i ncident)。rdoEngine用于对RDO全局属性的参数、选项进行设置,是在RDO的阶层结构内处于最上层的对象,包含了所有的其他对象。 rdoEngine对象与DAO/Jet不同,虽然被多个应用程序共享,但体现rdoEngine对象的设定值的属性却并不共用,而是在各自的应用程序的程序界面中对其分别加以设定。这些设定值对其他使用RDO以及RDC的应用程序没有任何影响。rdoEngine不是集合的要素,而是重新定义的对象,rdoEngine对象不能被追加作成。

  2. rdoEnvironment对象 RDO对象在自动创建rdoEngine对象时,将rdoEnviroment对象的初始值生成并保存为rdo Enviroments(0)。一般情况下,应用程序中不必追加rdoEnvironment对象,大多只需对已有的rdoEnviroments(0)进行操作就可以了。只有在支持一个以上事务(Transaction),需要将用户名和口令信息分别处理的情况下,利用rdoCreateEnvironment方法将特定的用户名和口令值作成新的rdoEnvironment对象。在这个方法中可以指定固有名、用户名和口令,如果所指定的值与rdoEnvironments集合的已经存在的成员名称相同,会产生错误。新建的rdoEnvi ronment对象自动追加在rdoEnvironments集合的最后。调用rdoCreateEnvironment方法时,其name参数可以是长度为0的文字列,这时新的rdoEnvironment对象将不会被追加在rdoEnvi ronments集合之中。 3.rdoConnection对象 rdoConnection对象用于同SQL Server的连接管理,下面是与SQL Server连接的例子。 第一步用New关键字声明一个rdoConnection对象: Dim Cn as New rdoConnection 由此生成独立的连接对象,这时它还不是rdoConnection集合的成员。在具体连接到SQL Server等之前,有必要设定rdoConnection集合的属性。对此,使用With关!

  键字编程效率会更好。

With CN
.Connect = “Uid = ; Pwd = ; Database = Pubs; DSN = MyPubsDSN; ”
' 设定Cursor类型
.CursorDriver = rdUseNone
'设定登录超时
.LoginTimeOut = 10 End With

  用RDO与SQL Server连接和断开

  RDO接口没有自动管理同SQL Server的连接和断开的功能,需由程序员自己加以判断。这里需要注意的是对连接和断开时机的管理,因为同时有过多的连接将会造成服务器负载过重。而且,对SQL Server而言,一个连接只能同时支持一个操作,当同时进行记录的读出和更新时,需要分别对其各自的连接加以确认。在一定条件下需要保持连接;反之,当操作完成以后,又需要立即将连接断开。如果能正确地设计好连接和断开的时刻,就有可能确保扩展更多的用户数(客户/服务器开发环境中,与数据库项的可扩展性一样,客户数扩张的可能性也非常重要)。 由于RDO是基于ODBC,它通过ODBC的数据源名(DSN: Data Source Name)与SQL Server相连。DSN的信息可以基于文件,也可以在连接时通过传递的参数指定。不过,一般来说,不推荐基于文件的DSN,因为一旦DSN文件被破坏,或者被误删除,设定起来就非常麻烦。通过 DSN对SQL Server的连接方式一般有以下几种: 

  查询ODBC的登录信息中是否存在有效的DSN:可以通过ODBC API的SQLDataSources函数取得DSN条目的列表,不过这种办法实用性不大。 

  用rdoRegisterDataSource函数生成新的DSN:虽然多少有一些麻烦,但比查询ODBC 登录信息要好一些。 

  与已有的DSN相连:需要手工设置DSN,而且安装应用程序之后还需个别地设定DSN,对用户来说不是很友好的解决方法。 

  从应用程序中自动启动控制面板的ODBC管理applet,向用户说明DSN的设定方法:有的应用程序就是用这种方法进行设定,但仍不是很实用的办法。 

  将SQL Server名保存在Windows Registry或INI文件,在连接时对rdoConnectio ns对象的属性作如下设置:在初次运行应用程序,或者找不到指定的SQL Server名的情况下,要求用户进行输入,并设置在Windows Registry或INI文件中。通常,SQL Server名不会改变;当连接出现错误时,可以像初次运行应用程序时那样,为用户提供指定SQL Server 名的对话框,这种做法最为理想。

  利用ODBC3.0驱动支持的功能在连接时实际指定DSN文件:作安装程序时包含这个DS N信息的文件,随同程序一起安装。

  此外还有其他一些DSN的连接方法,这里不作一一描述。 这些方法中具体哪一个最实用,需根据各种应用程序的安全性要求、安装方法等进行考虑加以选择,一般是组合上述方法的其中几种来编程。也就是说,用DSN文件的方式来作实际上的连接,而同时采用对DSN文件是否存在进行检查、不存在时要求用户输入SQLServer 名、用户名、口令并即时自动生成的方法。 实际的连接除了RDO 1.0的OpenConnection方法以外,也可以用RDO 2.0中新增加的Esta blishConnection方法,我们将在下期中介绍这些方法。此外,下面我们还将通过实际代码向大家继续介绍经DSN对SQL Server的连接方式、数据的读取、追加、更新、删除等内容。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

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

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