几种用VB访问Oracle数据库技术的比较

news/2024/7/3 5:57:43 标签: oracle, 数据库, vb, dao, basic, object
用Visual Basic访问Oracle数据库有许多方法可以实现,而每种方法都有其优缺点。你可以选择最适合你工作环境的方法,首先你必须了解这些方法是什么。在这 篇文章里介绍一些访问Oracle数据库的常见方法,对每种方法进行简单的概述,并就每种方法的技术和特点进行比较,希望能给广大读者提供一些借鉴。
  一、数据访问对象(DAO)
   数据访问对象在很长一段时间内是Visual Basic访问数据库功能的主要技术。DAO已经存在了许多年并经历了多次修改,但它依然是许多数据库的对象模型。尽管DAO是数据访问中最弱的一种,但 它同时也是最为人所熟知的。尽管DAO模型存在局限,但它依然有许多大量的函数可供Oracle用户使用,某些方面性能还可以令人接受的。
   
   DAO是一项过时的技术,尽管它仍应用于许多程序,但与新技术相比,它存在一些明显的缺点:
  ?DAO拥有的对象模型功能比较弱,在所有的数据库访问技术中它的功能最弱。
  ?DAO被设计为适用于JET而没有调整为适用于ODBC数据源。
  ?DAO不适合处理大量不同类型的数据源。
  二、远程数据对象(RDO)
  RDO是一种围绕着API产生的“包装” 性软件,它封装了API中的许多功能部件,为开发者提供了ODBC驱动器的所有功能。
   
   RDO是通过ODBC数据源访问数据的标志性技术,它围绕着ODBC API进行设计,并不完全适合与Oracle。尽管相对于DAO来说,它有很大的进步,但它的一些功能部件不适用于Oracle用户,因为Oracle的 体系结构与SQL服务器体系存在相当大的差异。RDO的缺点:
  ?微软认为它过时了,不会再给它投入更多的工作。
  ?不能通过存储过程检索PL/SQ游标变量。
  ?RDO依赖于ODBC驱动器,通常会受到它们之间不相容性之间的影响。
  三、ActiveX数据对象(ADO)
  ADO不但可以进行异步查询、连接和开放式处理,而且还能基于文件和独立的Recordset、分层结构Recordset等。它提供一种稳定的接口来使用户利用多种不同的数据源包括从文本文件到ODBC关系型数据库到复杂的数据库组。
   
  ADO是当前微软的顶尖技术。随着版本的更新,在事件模型部分更加成熟,但从Oracle用户的角度出发,这个技术仍存在一些缺点:
  ?不能通过存储过程检索PL/SQ游标变量。
  ?不能使用Oracle邦定参数。
  ?数据环境还会带来一些问题,它相对来讲,还不够成熟。
  ?数据环境不支持Oracle打包过程。
  ?处理Oracle中的大对象比较困难
  四、Oracle的OLE对象(OO4O)
   Oracle的OLE对象(OO4O)是一种进程中的OLE服务器,它提供了一种对象层次结构,与DAO非常相似,但却不采用ODBC标准。它利用 Oracle的调用接口来与Oracle会话。其中Oracle的调用接口是一种本地代码驱动器。令人遗憾的是它不能访问其他数据库
   
  OO4O拥有优异的功能性,访问Oracle数据库,其他任何数据库访问方式很难达到它的功能性。但OO4O仍有不足:
  ?在某些实例中,它的速度不是最快的。部分原因是因为它是一种进程中的服务程序。
  ?OO4O不支持异步操作或事件。
  ?OO4O不支持GetRows方式。OO4O主要被设计用于可更新动态集。
   在OO4O中,连接是比较容易实现的,你只需简单的键入你的用户名、口令和数据库别名即可。对象模型与DAO的相似,比较明显的不同是所有的对象前面都 冠有“Ora”字样。下面这些代码创建了Ora会话对象和相应的Ora数据库对象,然后又创建了Ora动态集来保存所检索的结果集。最后,关闭了Ora动 态集和Ora数据库对象。
  程序清单
  private sub FetchOO4O()
  Dim OraSession As Object
  Dim OraDatabase As Object
  Set OraSession(i) = CreateObject("OracleInProcServer.XOraSession")
  Set OraDatabase(i) = OraSession(i).DbOpenDatabase("exampledb", "scott/tiger", 0&)
  
  'Connect to the daabase
  Set OraSession = CreatObject("OracleInProcSever.XoraSession")
  Set OaDataBase = OraSession.OpenDatebase("beq-local",_
  "video_user/ummagumma",ORADB_DEFAULT)
  
  'Run then query
  strSQL="SELECT * FROM video_store.movies ORDER BY movie_id" 
  Set rsMovies = OraDateBase.CreatDynaset(strSQL,ORADYN_READONLY)
  
  'Display the fields
  while not rsMovies.EOF
  FOR ifields = 0 to rsMovies.fields.Count-1
  Debug. rsMovies.(iFields)
  Next 'iField
  rsMovies.MoveNext
  Wend
  
  Set rsMovies = Nothing
  Set OraSession= Nothing 
  
  End Sub
  五、各种方法的比较
  上面已经列举了4种访问Oracle数据库的方法,下面进行一下总结。




  


【来源】

http://www.niftyadmin.cn/n/1090193.html

相关文章

EF知识和经验

AsNoTracking提高查询性能 AsNoTracking的作用就是在查询的时候不做追踪,这样会查询的更快,但是这样做会有一个缺陷(不能对查询的数据做修改操作)。 var student2 db.T_Student.Where(c > c.Name "李四50").Take(5).AsNoTracking().ToLis…

iOS LZMA类压缩算法使用

LZMA(Lempel-Ziv-Markov chain-Algorithm的缩写)是2001年以来得到发展的一个数据压缩算法,它用于7-Zip归档工具中的7z格式和 Unix-like 下的 xz 格式。它使用类似于LZ77的字典编码机制,在一般的情况下压缩率比bzip2为高&#xff0…

Linux基础命令---修改用户密码passwd

passwd 更改用户密码,超级用户可以修改所有用户密码,普通用户只能修改自己的密码。这个任务是通过调用LinuxPAM和LibuserAPI来完成的。本质上,它使用LinuxPAM将自己初始化为一个“passwd”服务,并利用配置的密码模块对用户的密码进…

C#之VS开发工具快捷键大全

CtrlJ(Alt→):智能提示。 CtrlX:删除整行。 ShiftAltEnter:全屏切换 F12:跳转到定义。 Ctrl-、CtrlShift-:上一步、下一步(仅限于使用过上一步)。 CtrlU、CtrlShiftU&…

Oracle在Linux下地安装小结

Oracle公司宣称在Linux下安装Oracle9i数据库至少要有512MB的内存和至少1GB或者两倍内存大小的交换空间,对于系统内存大于2GB的服务器,交换空间可以介于2GB—4GB之间。 如果是为了在一台仅有256M内存的普通PC机上试用Oracle9i,在分配了1GB左…

Flask系列:数据库

这个系列是学习《Flask Web开发:基于Python的Web应用开发实战》的部分笔记 对于用户提交的信息,包括 账号、文章 等,需要能够将这些数据保存下来 持久存储的三种方法: 文件:shelve(pickle 和 DBM 的结合)等,提供类似字…

JBuilder 2005实战JSP开发【天极】

【来源】在这期专题中我通过一个用户登录模块的开发向你详细讲解使用JSP的各项技术开发Web程序程序的过程和步骤。通过本文的学习,你将可以掌握在 JBuilder 2005下开发JSP的各种知识点和技巧。特别是你将学习到在JBuilder中配置和使用JSP自定义标签的方法和使用Web容…

c#快速热身

一.选择结构: 1. if选择结构 2. if-else选择结构 3. if-else if-else if-else多重if选择结构 4. if-if-else-else 嵌套if选择结构 5. switch选择结构 switch(表达式) { case 常量表达式1: 语句1; break; case 常量表达式2: 语句2; break; ...…