2.2.1 Visual Basic对数据库的访问

Visual Basic采用事件驱动的编程模式。驱动窗体工作需要编写相应的事件过程代码,由这些代码请求数据库服务,如添加记录、删除记录、执行查询等。这些对数据库的访问请求不直接对后台数据库发出,而是向数据库引擎提出,由数据库引擎执行对后台数据库的访问请求操作,并向应用程序返回所需要的结果。

数据库引擎就是操作数据库的一段程序或程序段,它由一组动态链接库(DLL)文件组成,介于应用程序和后台数据库之间。当运行应用程序时,这些文件被链接到Visual Basic应用程序中,能够把应用程序的请求翻译成对数据库的物理操作,完成对数据库的各种操作,并将操作结果返回给应用程序。Microsoft Jet数据库引擎是Access和Visual Basic使用的一种数据库引擎。

在Visual Basic中可以访问各种类型的数据库,具体的数据库类型如下:

Jet数据库,即Microsoft Access;

ISAM数据库,如dBase、FoxPro、Excel等;

ODBC数据库,如SQL Server、Oracle。

在数据库的选择上,一般开发小型数据库系统用Access比较合适,开发大、中型的数据库系统用ODBC数据库更为合适,Excel一般用来进行表格数据的导入/导出。

从Visual Basic 6.0开始,Visual Basic程序中可以使用3种数据访问方式(也称为数据存取模式):

数据存取对象(Data Access Objects,DAO);

远程数据访问对象(Remote Data Objects,RDO);

ActiveX数据对象(Active Data Objects,ADO)。

之所以有三种不同的数据库对象是历史原因造成的。起初,Visual Basic只支持连接在Microsoft Jet数据库引擎(Access中的数据库引擎)上的DAO。后来,考虑到存在其他数据库类型,Microsoft制定了开放式数据库连接(ODBC)标准,并用Visual Basic中的远程数据对象RDO支持这一标准。最后,Microsoft认识到Web的重要性,并创建了ActiveX数据库对象。ActiveX对象编制了一种允许通过网络和Web方式连接到同一台计算机上的弹性标准,并打算取代ODBC。

由于ADO能够取代RDO,RDO现在已经用得很少了。后面的实例也只介绍DAO和ADO数据存取模式。通过这三种数据存取方法,使用Visual Basic 6.0以上版本可以在任何应用程序中通过编程控制数据库连接、通过查询返回数据和操作数据。

Visual Basic中有两种使用DAO、RDO和ADO数据存取模式的具体实现方法:使用特殊控件和使用程序代码。

1.使用特殊控件

Visual Basic 6.0提供了第三方控件支持三种数据存储模式,如数据控件(支持DAO)、远程数据控件(支持ODBC)和ADO数据控件(支持ADO)。使用这些控件可以链接到数据库并操作数据库中的数据,但这些控件实际上并不能显示数据,必须将它们与数据绑定控件绑在一块,由数据绑定控件控制记录的显示、修改和移动等。

由于Visual Basic自带的标准工具箱中没有这些特殊控件,若要使用数据访问对象DAO来建立数据库及访问数据库对象,必须在Visual Basic工程中首先声明对它们的引用,否则在程序运行时,Windows将无法识别该对象。声明的方法:在Visual Basic的开发环境中,执行“工程”→“引用”菜单命令,在弹出的“引用”对话框中,选择“Microsoft DAO 3.51 Object Library”。同样,若要使用ADO对象,要引用“Microsoft ActiveX Data Objects 2.6 Library”,将ADO控件作为ActiveX控件添加到工具箱中才能使用。

这些控件与数据绑定控件绑定后能控制记录的显示、修改和移动。能进行数据绑定的控件主要有标签、文本框、列表框、组合框、图片框等。另外,Visual Basic还提供了一些可以添加到工程中的ActiveX控件,主要有MSFlexGrid、DBGrid、DBComboBox、DBListBox、DBComboBox、MaskedEdit等。

2.通过程序代码

每种数据存取方法都由一系列的对象组成,这些对象都有一系列的方法、属性甚至事件,在程序中,可以直接以编码的方式使用三种数据存取方法提供的对象组,完成对象的创建、数据的显示和修改,记录的移动和查询数据的返回等功能。