简单生活
返回文章列表
1892 字10 分钟

VB访问数据库的方法与原则

设计开发#VB/数据库访问

1.VB 访问数据库的原则

总则:具体问题具体分析,根据具体的环境、条件、要求而采用适当的方案

*代码的重用和运行的效率

例如:通过使用 ODBC 数据源连接数据库的方法,可在变换多种数据库类型的情况下,而不用频繁修改代码。用 VBSQL 通过 DB-Library 就做不到。而 ODBC 接口并不是 VB 访问数据库运行效率最高的方法。同样,同是使用 ODBC 接口的 ADO 的效率要高于 RDO

*实现的简便性,易维护性

如果一种方法实现起来很复杂,工程的开发必然造成人力物力的浪费,同时这样设计出来的应用程序只会支持起来更复杂或维护时更困难。例如:本地需要访问 ISAM 或 Jet 类型数据源,那么就使用 DAO/Jet,而没有必要使用通过 ODBC 的方法。RDC 实现起来要较 RDO 更容易

*安全性原则

报这一条应根据环境和条件决定。例如局域网的网络安全性要好于广域网因而可直接利用数据控件如 DC,这样实现起来方便快捷,而广域网需要大量的错误捕获,如用 RDC 就不如用 RDO 易控制错误。

2.VB 访问数据库的方法

VB 访问数据库的方法很多,一般情况下分成两大类,而每一类又有很多方法。

数据访问接口功能及含义:

ADC:高级数据连接器(AdvancedDataConnector):提供绑定 ADO 数据源到窗体的数据绑定控件上。ADC 主要是一种直接访问或者通过 ADO 访问远程 OLEDB 对象的一种技术,它也支持主要应用在微软 IE 浏览器上的数据绑定控件。它是特地为 Web 上的浏览器为基础的应用程序而设计的。

ADO:Active 数据对象(ActiveDataObjects):ADO 实际是一种提供访问各种数据类型的连接机制。ADO 设计为一种极简单的格式,通过 ODBC 的方法同数据库接口。可以使用任何一种 ODBC 数据源,即不止适合于 SQLServer、Oracle、Access 等数据库应用程序,也适合于 Excel 表格、文本文件、图形文件和无格式的数据文件。ADO 是基于 OLE-DB 之上的技术,因此 ADO 通过其内部的属性和方法提供统一的数据访问接口方法。

DAO:数据访问对象(DataAccessObjects):是一种面向对象的界面接口。通过 DAO/Jet 功能可以访问 ISAM 数据库,使用 DAO/ODBCDirect 功能可以实现远程 RDO 功能。使用 DAO 的程序编码非常简单,DAO 提供丰富的游标(Cursor)类型的结果集和非游标(Cursor-Less)类型的结果集,同 DDL(数据描述语言)的功能很类似。

DAO 模型是设计关系数据库系统结构的对象类的集合。它们提供了完成管理这样一个系统所需的全部操作的属性和方法,包括创建数据库,定义表、字段和索引,建立表间的关系,定位和查询数据库等工具。

JET:数据连接性引擎技术(JointEngineTechnology):是一种基于工作站通过 DAO 的数据库访问机制。虽然可以通过微软 Access 提供的 ODBC 驱动程序访问 Jet 数据库,但使用这些驱动程序在功能上有所限制。Jet 机制有自己的查询和结果集处理功能,并可对同种或异种数据源作查询处理。

0DBC:开放式的数据库连接(OpenDatabaseConnectivity):是一种公认的关系数据源的接口界面。它快而轻并且提供统一接口的界面,ODBC 对任何数据源都未作优化。

ODBCDirect DAO 对象的新的 DAO 模式,其方法和属性与 RDO 功能相同。使用在有 DAO 代码存在的场合,可用来访问远程数据源。

OLEDB。是用于第三方驱动程序商家开发输出数据源到 ADO 技术的应用程序或用于 C++的开发者开发定制的数据库组件。OLEDB 不能被 VB 直接调用。

RDC(RemoteDataControl):是一种对 RDO 数据绑定的控件。可以输出特定的结果集到数据源控件。

RDO(RemoteDataObjects) ODBC 数据库系统的各个部件提供了一个框架。对象和集合都具有描述数据库的各个部件特征的属性以及用来操作这些部件的方法。可以在对象和集合之间建立起关系,这些关系就代表了数据库系统的逻辑结构。RDO 是 ODBCAPI 的一个浅层界面接口。是专为访问远程 ODBC 关系数据源而设计的。

VBSQL VisualBasic 结构化查询语言。是一种基于 API 的接口方法,几乎与 C 的 DB-LibraryAPI 相同。VBSQL 只支持微软的 SQLServer。VBSQL 快而且轻但不支持对象界面。

使用 RDO 的一般方法如下。

先声明变量:

PublicconAsrdoConnection,resAsrdoResultset

然后初始化 rdoEngine,设置用户和口令等缺省参数;WithrdoEngine

.rdoDefaultUser=“sa”注释:用户为 sa

.rdoDefaultPassword=“pass”注释:口令为 pass

.rdoDefaultCursorDriver=rdUseServer

.rdoDefaultLoginTimeout=15

EndWith

再连接到要访问的远程数据库(可使用 DSNConnection 和 DSN-LessConnection)。

使用 DSNConnection 举例(连接服务器 SERVER 上的数据库 hotel):

Setcon=rdoEnvironments(0).OpenConnection

(“hotel”,rdDriverNoPrompt,False)

使用 DSN-LessConnection 举例(连接服务器 SERVER 上的数据库 hotel):

Setcon=rdoEnvironments(0).OpenConnection

(“”,rdDriverNoPrompt,False,_“driver={SQLServer};server=SERVER;database=hotel”)

建立连接后,既可使用 OpenResultset 方法执行查询并处理结果集,又可使用 Execute 方法执行包括数据定义和数据操作在内的动作查询。例如:

Setres=con.OpenResultset(“SELECT*FROMmenu”,rdOpenStatic)

con.Execute“CREATEVIEWmenu_viewASSELECT 代码,菜名 FROMmenu”,rdExecDirect

RDO 最强大和最重要的特性之一是:它可以查询和处理由存储过程返回的结果,无论它有多么复杂。

除 RDO 外,还可使用 RDC 访问远程数据库。

远程数据控件(RDC)与数据控件(DC)类似,不同之处是 RDC 使用 RDO 连接到 ODBC 驱动程序管理器,而 DC 则使用 DAO 连接到 Jet 数据库引擎。利用 RDO 和 RDC,无需使用 Jet 引擎就可以访问 ODBC 数据源。这样,在访问远程数据库时,可以获得更好的性能和更大的灵活性。

远程数据控件 MSRDC 使用举例如下。

Connect={SQLServer};server=SERVER;database=hotel

DataSourceName:

SQL*FROMmenu

UserName

Password

CursorDriver

可以使用 RDC 执行许多简单的远程数据访问操作,不需编写任何代码,只要填写有关项就可以了,使用起来很方便。但应注意,除非在设计时禁止并只在需要时启动 RDC,否则它至少将消耗一个远程数据库连接。在远程数据库连接资源有限或要求很高效的情况下,宜慎用、少用 RDC。这种情况下,应尽可能考虑使用 RDO,并使用存储过程(预编译好的 SQL 语句)。

最后还应注意,只有 32 位操作系统(如 WindowsNT 或 Windows95),才能支持 RDO 和 RDC。RDO 和 RDC 也只能用于访问 32 位 ODBC 数据源。