VB数据库 论VB中的数据库访问方法
摘要:在信息高度发展的今天,任何一种应用都离不开对数据的访问,而数据的访问除了对其包含有各自信息数据的文件操作之外,最主要的方法就是对数据库的操作。VB作为一种通用应用程序开发工具,由于其广泛而友好的数据访问接口技术,更是成为开发数据库前端应用程序的首选。就VB对数据访问技术展开论述。
关键词:VB 数据库 访问
数据库访问技术处在不断进步中,DAO、RDO和ADO代表了该项技术发展的不同阶段。尽管VB中提供了直接与ODBC或OLEDB交互访问数据库的方法,但由于其属于底层接口,编程复杂,通常较少使用,大部分VB应用程序更常更多使用DAO、RDO和ADO,下面本文对这三种数据访问接口做进一步的讨论。
一、DAO(Data Access Objects,数据访问对象)体系结构及性能特点
DAO的体系结构:DAO是使用分层的对象框架实现的,DBEngine是DAO对象的顶层,它表示Microsoft Jet Database Engine。每个应用程序只能创建一个DBEngine对象,所有其他DAO对象都含在DBEngine对象内。Workspace和Errors是DAO框架的第二层。每个Workspace对象代表一个数据会话,用于控制数据库的登录安全性和事务范围。每个Workspace对象包含一组Database对象。Database对象是DAO的中心对象。每个Database对象表示一个本地或远程数据库。当Jet引擎打开本地或远程数据库时,一个Database对象就增加到该Database集合中。Database对象包含其他主要的DAO对象集合。其中TableDef、Recordset、QueryDef对象集合用于访问SQLServer数据库,而Relations和Containers用于本地Jet引擎数据库。DAO的性能特点:DAO是第一个面向对象的数据库访问编程接口,是VB默认的数据库访问方式。这种结构的好处是:同一代码能支持所有格式――不管它是ISMA还是ODBC数据源。
二、RDO(Remote Data Objects,远程数据对象)体系结构及性能特点
RDO的体系结构:RDO是一种对象框架和对象集合,RDO的对象层次与ODBC的对象层次非常相似,RDO对象模型完全并行于ODBC的体系结构。在RDO对象框架的顶层是rdoEngine,rdoEngine表示远程数据源。所有的RDO应用程序都必须有一个rdoEngine对象的实例,rdoEngine对象是惟一的,它总是作为一个对象集合,所有其他对象都包含在集合中。rdoEnvironment在rdoEngine的下一层,主要用于设置某个给定数据库连接将要使用的用户ID和口令值及事务范围。rdoEnvironment对象的下一层是rdoConnection对象,它负责创建对数据源的连接。它通过使用OpenConnection启动一个主连接。每个rdoConnection对象可以有rdoTable、rdoResultset和rdoPreparedStatement对象集合。每个rdoTable对象表示一个数据库表,每个rdoPreparedStatement对象表示一个预准备的SQL语句,每个rdoResultset对象表示由一个由SQL Select语句返回的数据集;这些对象都可以包含rdoColumn对象。使用rdoParameter对象在本地程序变量和参数化查询或存储过程之间交换数据。rdoError对象包含任何由基本的ODBC操作生成的错误在VB的On Error句柄中,可以从rdoErrors集合中检索指定的错误信息。RDO的性能特点:RDO是VB与ODBC连接的推荐模式,是一个直接与ODBC API连接的面向对象接口,但仍需使用Jet引擎。从RDO的层次模型可以看出,RDO兼具了ODBC API与DAO二者的优点:一方面它的层次结构没有DAO复杂,对象的创建和处理简单;另一方面,RDO仍表露了ODBC API的基层结构,可提供环境、连接和语句句柄。值得注意的是:RDO不能直接执行改变数据库规划的操作,且仅能应用于32的操作系统中。使用RDO的应用程序可以绕过本地查询处理程序而直接访问ODBC数据源,这点与DAO不同,由于这一特点,RDO特别适合客户/服务器应用程序的开发。如果你考虑采用一种直接与ODBC API一起使用的编程方法,那么,RDO是一种合适的解决方案。
三、ADO(ActiveX Data Objects,ActiveX数据对象)体系结构及性能特点
它是DAO/RDO的后继产物,ADO“扩展”了DAO和RDO所使用的对象模型,这意味着它包含较少的对象、更多的属性、方法(和参数),以及事件。ADO实际是一种提供访问各种数据类型的连接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口。可以使用任何一种ODBC数据源,即适合于SQL Server、Oracle、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件和无格式的数据文件,是一个便于使用的应用程序层接口。OLE DB:是COM模型的数据库接口。它是一种底层数据访问界面接口。是用于第三方驱动程序商家开发输出数据源到ADO技术的应用程序或用于C++的开发者开发定制的数据库组件。它能够处理任何类型的数据。OLE DB向应用程序提供一个统一的数据访问方法,而不考虑它们的格式和存储方法。在实际应用中,这种多样性意味着可以访问驻留在电子数据表、文本文件甚至邮件服务器中的数据。OLE DB不能被VB直接调用。
四、用VB访问数据库应注意的几个问题
1、如何来访问数据库。VB访问数据库提供二种方法,其一是用数据控制,其二是使用对象来访问数据库,在这两种方法中,都涉及到数据库的属性。但有时设置好connect,databasename后再设置recordsoure时,经常会出现“无法找到可安装的ISAM”错误。这里所讲的[ISAM]是在VB.INI文件中,它为VB指明所访问数据库的动态链接库。而在connect中所用的数据库的名称必须于[ISAM]中的数据库的名称相符合,这样就可以轻松地打开数据库。
2、关于书签指针即bookmark属性。在VB访问数据库时,数据库中的记录是没有记录号的,但VB提供了bookmark属性来记录当前访问记录的记录指针,这个bookmark就相当于记录号。但在实际编程时发现在使用数据库控制和用对象打开数据库来访问同一个数据库时的bookmark属性在这两者之间并不通用。当用bookmark记录了用数据控制打开的数据库的当前记录指针,然后使用对象打开此数据库后,用数据控制的bookmark来查找定位记录时,将会导致bookmark不合法的错误。
3、要注意hide方法和unload方法的区别。Hide方法是将你所指定的表单隐藏起来,但并不从内存中删除它,故此表单的内容并没有改变。而unload方法是将指定的表单删除掉(从屏幕上消失并从内存中删除),如在当前表单中使用格子控制来显示记录内容,然后用hide方法隐藏此表单,随后你重新选定记录装入格子控制,用show方法显示隐藏的表单,此时格子里的内容依然是旧的内容而新内容并没有代替旧内容。这里就需要使用unload方法将表单删除,然后新记录装入格子控制,用show方法显示时,就可以看到新的内容。
4、要注意变量类型的匹配。在访问数据库时,显示记录一般都使用格子控制,其中grid.text是子符串类型,但有些记录的数据项是空的(null)即没有数据。若将null装入grid.text显然会出错,所以这里就需要加入类型的判断,将null数据项赋于空格子符串,这样就可以解决此问题。
使用VB开发数据库系统,以上几种数据访问的方法各有各的特点,依赖于用户的应用程序而定:DAO方法是基于对象的,因而便于使用,灵活地操纵数据的编辑操作;远程数据对象RDO建立了在服务器上处理数据的访问模式;而基于ActiveX数据对象的ADO更是以其倾向于编写数据库应用程序,使程序开发者更易于控制数据库的访问,同时ADO所具有的较强的功能、通用性好、效率高、占空间少,迅速成为适合于作为服务器端的数据访问技术。
参考文献:
[1]李存斌.Visual Basic高级编程及其项目应用开发[M].北京:中国水利水电出版社,2003.
[2]谭浩强等.Visual Basic程序设计[M].北京:清华大学出版社,2000.
[3]高春艳等.Visual Basic开发技术大全[M].北京:人民邮电出版社,2007.
