设为首页 加入收藏

TOP

用VC++开发ODBC数据库应用
2014-11-23 20:01:15 】 浏览:8159
Tags:开发 ODBC 数据库 应用

ODBC概述

ODBC即开放式数据库互连(Open Database Connectivity)是用于访问数据库的

统一界面标准。它包含一组可扩展的动态链接库,为我们提供了一个标准的数

据库应用的程序设计接口,可以通过它编写对数据库进行增、删、改、查和维

护等操作的应用程序。

ODBC的DLL之下安装不同数据库的驱动程序,开发人员可以访问不同的数据

库资源。由于ODBC是基于关系数据库的结构化查询语言SQL而设计的,在ODBC

层之上的应用程序看来,各个异构关系数据库只是相当于几个不同的数据源

(如图所示),而这些数据源的组织结构之不同对于程序员来说是透明的,所以

我们就可以编写独立于数据库的访问程序。

大多数的数据库在进行设计时都遵守SQL标准,这使应用可以利用SQL标准对

不同的数据源进行操作。我们可以发出SQL命令,由ODBC发给数据库,数据库

再将结果经过ODBC返回给应用程序。

使用ODBC编程必须先建立环境、连接、语句三个句柄,环境句柄建立从应用

ODBC的联系,连接句柄建立ODBC Driver到数据源的组合关系,当连接句柄

建立后,应用程序要建立一个语句句柄以执行SQL语句。接下来调用执行函数

就可以查询或更新数据库的表,若查询语句较为特殊,它会返回一个结果集,

需要程序员对此结果集做处理。将应用程序关闭时,首先要将语句句柄释放,

然后释放连接句柄,最后释放ODBC环境句柄。

结果集是符合查询条件的记录的集合,保存在一段内存中。程序员建立结果集

与用户变量的联系,使结果集中的每一列与用户申请的变量一一对应,以便程

序员对结果集进行操作, 建立这个联系的动作叫绑定(Binding)用VC++4.0开

ODBC应用程序时,可利用开发系统提供的MFC类以节省大量工作。MFC为ODBC

编程提供两个类:CDatabase类和CRecordset类。CData base类主要封装与数

据源的连接工作,CRecordset类封装数据源的表与用户内存的绑定工作。

使用MFC编写ODBC应用程序依对库的绑定时间分为两类:静态绑定、动态绑定。

静态绑定是在程序编译时绑定的一个表;动态绑定是指绑定发生于程序运行时。

静态绑定的应用程序容易编写,但由于绑定的动作发生在编译时,只能对已知的

表进行绑定。动态绑定对用户来说较为方便,而程序员也可以对表进行较多、

较灵活的操作。以下将分别介绍动态绑定和静态绑定,本文的重点是介绍动

态绑定。

静态绑定

静态绑定的编程步骤如下:

1.利用VC++的应用向导制作一个应用程序框架所需的代码,其中数据库支持

部分应选择Header File only。

2.利用VC++的类向导加入一个由CRecordset类派生的用户记录集类(假定Cset)。

按下Create Class按钮,系统会弹出两个对话框分别让用户选择数据源和表。

3.输出结果。

数据源和表由类向导确定之后,系统会自动将选定的表绑定在Cset类上,即为

Cset类建立几个数据成员变量,分别对应表的各个列。各数据库的数据类型

VC++的记录集类的数据成员变量类型的对应关系如下表所示。

然后,类向导还要覆写CRecordset类的三个虚拟函数:DoFieldExchange、

GetDefaultSQ L和GetDefaultConnect。至此,静态绑定就完成了。前面曾提

,查询操作返回结果集包含被查询表中的符合查询条件的记录。派生记录集

Cset的数据成员变量分别对应数据库的一个字段,它们的组合就是一个记录。

调用游标定位函数使Cset类定位于某一行。类封装的增、删、改函数可修改、

删除当前行,对各个成员变量做输出处理可实现查询功能。

静态绑定技术减少了程序员工作量。但是由于表必须编译前确定,每建立一个

新表应用程序都要重新编译以绑定此表;表结构也由类向导固定在CRecordset

的派生类中,已经绑定的表一旦结构被修改应用程序也都要重新编译以绑定此表。

静态绑定的缺点用动态绑定正好可以克服。

动态绑定

动态绑定在运行时对一个表进行绑定,可以使同一个应用程序能够针对不同的表

提供服务。动态绑定一个表需要做到以下两点:知道选定的数据源包含有哪些表,

以便确定用户要访问的表是否存在;得到表结构的信息,确定申请多少内存以及申

请什么类型的内存,以便与表相对应。

VC++4.0系统的安装光盘的目录SAMPLESMFCDATABASECATALOG下有

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇利用VC++获取异构型数据库库结构.. 下一篇用VC开发基于ORACLE数据库应用程..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目