说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

用VB和RDO访问SQL Server

HTML文档下载 WORD文档下载 PDF文档下载
用VB和RDO访问SQL Server

远程数据对象 (Remote Data Object ,简称RDO) 是位于 ODBC API
之上的一个对象模型薄层,它依赖 ODBC API、选定的 ODBC 驱动程序以及
后端数据库引擎实现大部分的智能和功能,因此短小(大约250 K)、快速
、强健。RDO具备基本的ODBC处理方法,所以可以直接执行大多数ODBC API
函数。RDO包含在VB4.0/VB5.0企业版中,由一个动态连接库MS RDO32.DLL
实现。 当VB版本还只是2.0时,从VB访问MS SQL Server的手段只有API函
数集(VBSQL/DBLib或 ODBC API)。VB发展到3.0时,其DAO/Jet (Microsoft
Access的数据库引擎)功能非凡,具备面向对象的程序接口,但处理速度尚不
尽如人意。另一方面,尽管VBSQL/DBLib、ODBC API在速度方面性能很好,但
它需要花费很大的精力进行繁琐的编程工作。
当MS SQL Server发展到6.0、VB发展到4.0时,开发了新的对象模块,由此产
生了RDO,可以访问SQL Server、Oracle;RDO2.0则是由VB5.0提供的。值得
一提的是,它实现了“事件驱动型数据库访问的编程方式”。
要讨论RDO,就必然要谈到DAO。DAO/Jet是为了实现从VB访问Access数据库而
开发的程序接口(对象)。RDO是从DAO派生出来的,但两者很大的不同在于
其数据库模式。DAO是针对[记录(Records)]和[字段(Fields)],而RDO是作为
[行(Rows)]和[列(Columns)]来处理。也就是说DAO是ISAM模式,RDO是关系模
式。此外DAO是访问Access的Jet引擎(Jet是ISAM)的接口,而RDO则是访问
ODBC的接口。
可见,RDO是综合了DAO/Jet、VBSQL/DBLib以及ODBC的优点的对象(Object)。
需要强调的是,RDO是包裹着ODBC
API的一层薄薄的外壳,被设计成在后台(服务器端)有数据库存在的前提下
运行,同时也是针对SQL Server和Oracle而特别设计的。
RDO的优势在于它完全被集成在VB之中。此外,直接访问SQL Server存储过程
、完全支持TQL、TQL调试集成在开发环境中、Visual Database Tools的
集成化等,也是RDO的长处。

RDO之后是ADO

Microsoft公司已宣布今后不会对VBSQL/DBLib进行升级,而ODBC
API函数一级的编程方式也不为人们所喜爱。RDO自身今后将被以ActiveX技术
为基础的ADO(ActiveX Data O bjects)所替代。Visual
Basic下一个版本中由哪一个作为标准配置还不很明确,但这一发展趋势已经
很清楚。 为什么需要ADO呢?RDO是以ODBC为基础,而ADO则是基于全新的OLE
DB技术。ODBC本身是以SQL Server、Oracle等关系数据库作为访问对象;OLE
DB则不仅限于此,而将是可以对电子邮件、文本文件、复合文件、数据表等各
种各样的数据通过统一的接口进行存取的技术。DAO、RDO当然不会一下子消
失,但随着新技术的利用,它们的作用将逐步淡化。

RDO的对象模块图

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

1. rdoEngine对象
最初调用RDO对象以及RDC(远程数据控件)时,自动生成rdoEngine对象的附
带事件(incident)。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集合的已经存在的成员名称相同,会产
生错误。新建的rdoEnvironment对象自动追加在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的连接和断开的功能,需由程序员自己加以判断。这里需要注意的
是对连接和断开时机的管理,因为同时有过多的连接将会造成服务器负
载过重。而且,对SQLServer而言,一个连接只能同时支持一个操作,当
同时进行记录的读出和更新时,需要分别对其各自的连接加以确认。在
一定条件下需要保持连接;反之,当操作完成以后,又需要立即将连接
断开。如果能正确地设计好连接和断开的时刻,就有可能确保扩展更多
的用户数(客户/服务器开发环境中,与数据库项的可扩展性一样,客户
数扩张的可能性
IP争夺战:任天堂与DeNA联手意味着什么? UNITE 2015干货不断,三天日程抢先看! iOS 8发布近一年,苹果HomeKit都带来了什么? Facebook开源移动网络测试工具Augmented Traffic Control 用JavaScript开发移动原生应用,Facebook正式开源React Native! 《知性》,探寻移动化社区的敏感带 【程序员电子刊精选】技术人员如何参与产品设计讨论之激活那一潭死水 Google开源代码构建工具Bazel 长点心吧!为啥健身应用让你越减越肥? 微信公众号能删除单篇文章了 安卓Android手机应用开发入门书籍推荐 自动释放内存!Facebook推出强大Android图片库Fresco 《近匠》AR学校:从教育领域看增强现实机遇何在 专访Mellanox CEO Eyal Waldman:InfiniBand与以太网齐驱并进 性能更胜一筹 IM助你打造千万级App——容联•云通讯线下沙龙 乐视智能硬件再发力,超级自行车今发布 专访格灵深瞳CTO赵勇:为" 计算机视觉" 赋予智慧的光芒 【程序员电子刊精选】水火不容?研发人员也是产品经理! 如何打动用户?携程用户体验实践分享 【征文】Java二十周年特别策划——谈谈我与Java的那些年、这些事 Facebook的愿景以及虚拟现实的未来 iBeacons一年回顾 英特尔中国30周年之际 IDF上你需要了解的5件事 OpenCloud 2015参会者的三大特征(附列表) 友盟移动互联网趋势报告解读:垂直领域应用竞争白热化 墨腾动漫CTO吴建学:初创公司的生存之道 亿航与高德达成战略合作 LBS+引爆智能硬件软实力 《近匠》火柴手写码,输不错的验证码利器 Web、App中添加动效设计应遵循的12条原则 越狱与开源:2015移动安全峰会(MSS)纪实 开发者自白:我是如何不花一分钱收获230万应用下载量的! 请问中级程序员考试中的数据结构考不考 图、文件方面的内容??不要意思没有分给了……见凉!! 请问高手,我想把sqlserver数据库中的一个表的所有列的名称属性都导出到excel中,或word中都可以,请问高手有没有办法能搞定? 请问中级程序员考试中的数据结构考不考 图、文件方面的内容??不好意思没有分给了……见凉!! 用VB.NET实现网吧收费管理的问题 ifaq, please come in. 求如何将数字字符串转换成钱的习惯读法?(解答者给全分,分不够在给!) 难吗,一点也不难,简单吗,一点也不简单,请进! 能否提供一个上传的控件(delphi7.0)??? 谁有studioMX2004正式版的下载地址啊 初学者提问:如何开始编写EJB Module? 破坏系统图标问题!!!!!! 偶想数据结构(C++描述),请大家多介绍几本! 紧急求救:两台连上交换机的电脑为何互相ping不通? 看到corejava第二卷。头大 有这么一种打印格式。。。。。。 我的c盘是系统盘,我不想别人安装东西在里面或者改动,怎么设置?? 免费空间,哈哈 Image 的地址传递问题 有什么方法能让jsp的执行中延迟一点时间。 明天又是九.一八 爱上一个银行MM,真的不知道怎么办!!!!!!!!帮帮我呀! installshield的问题? 求解一个简单问题 机器老是响个不停是怎么回事? 关于frame? 菜鸟求救!!!怎样判断输入框????? informix中的这个sql该怎么写 一个关于batchmove控件的问题? 请高手指点! 國慶節有多少人准備散分的 哪位做过java和SAP系统之间的接口? 关于文档和窗体在多进程时的传递 应用发布时失败,提示“can't drop table~~~~~~~~~” 通过电脑可以收发传真吗? 请问,如何在一个标签中加入其他的控件,并且控制标签显示的位置? 通过 2 个输入框 动态调整大小 ,但是不起作用 ?不是 后端 设置属性 会覆盖前端的吗 ? 写的第一首旧体诗,呵呵~ 学asp.net后再学asp快吗? ifaq, please come in. for you 求教问题!着急!asp.net如何连接SQLserver 十万火急:使用Directshow从摄像头读入数据,全屏播放时速度很慢 如何接受ActiveX控件的事件参数 关于MM和程序 求书 请问一个关于struts的问题,多谢了 求好书 请高手们指点一下!!!! 如何将tomcat8080端口改成8090? 急问:如何判断串口是否有设备接入? 请教:如何用win2k server和win2k pro进行局域网内的域建设 关于ltoa这个函数的一个小问题! 土尔扈特部回归祖国说明了什么? 从a,b,c,d中任意选取3个字母的试验中,所有可能的基本事件数为( )A.3个 B.4个 C.6个 D.24个 为什么说祖国统一是谁也阻挡不了的谢谢了, 关于英语字母的小故事 比喻 坏的多,好的少.可以用什么样的比喻?谢谢了,大神帮忙啊比喻好的书籍少,坏的书籍多.能用什么来比喻,最好是日常生活中的. 神马叫做AA制 t淋巴细胞表面标记?能说得详细点就更好了 黑魔鬼香烟的问题黑魔鬼在云南文山哪有卖?还有同学说黑魔鬼是禁烟,说什么连续抽两个就会休克!是不是真的? 国内左派右派具体含义对国内左派右派之分还是不了解? 什么是中国国民党左派领袖 祖国六十年像什么?祖国六十年像一条长河,有急流也有缓流;祖国六十年像一幅画卷,有冷色也有暖色……(再来两个这样的比喻句, 印度开建“全球最高”塑像Kinect将实现手语翻译美解除航班电子设备禁令日议员就福岛事故\"告御状\"印尼外长召见澳洲大使 要求就窃听报道我专家赴禁化武组织受训日俄防长会谈当天俄军机飞临 日战机紧杭州警方客串亲戚劝女子脱离传销队伍汇市周评:美联储按兵不动 非美货币走四名中国记者获美国科学促进会国际科学墨西哥对垃圾食品举起征税大棒王府井举办情人节接吻大赛过一个3D的魔幻元宵节吧学习全会精神 开创全面深化改革新局面“2.5环”整体冠名为“中环路”找“游击队”装修一步一个坑美式口腔 到底有何不同?高层频调 成都品牌房企密集换帅艰难的申请:让杀女丈夫回家6岁大熊猫“锦意”患病死亡混合所有制经济为新疆油气开发添活力于田400余名机关干部赶赴震区开展救超自然科技强国火影之虫鸣疯狂修复无为传说吾为妖族只有神知道的幻想乡枫叶随想火影之琉璃刃天桥图综漫之夜月同人之梦醒千年月亮湾公园旅游荔林公园旅游宝安公园旅游西乡公园旅游沙角炮台旅游威远炮台旅游海战博物馆旅游粤晖园旅游笑翻天乐园旅游丹水坑风景区旅游南海神庙旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘