vc数据库编程,VC数据库
从简单的数据库(如JetEngine)到复杂的大型数据库系统(如oracle),VC 6.0都提供了一些编程接口。本文主要介绍以下五种:
1.ODBCAPI
2.MFCODBC类;
3.MFCDAO类;(数据访问对象)
4.OLE/DB;四分之一。MFC
5.ActiveX数据对象(ADO)。
1.开放式数据库连接(ODBCAPI):提供一个通用的编程接口,允许程序与各种不同的数据库连接。它为Oracle、SQLServer、MSExcel等提供驱动程序。以便用户可以使用SQL语句直接操作数据库的底层功能。使用ODBCAPI时,用户必须导入的头文件是 sql.h , sqlext.h 和 sqltypes.h 。使用ODBCAPI创建数据库应用程序遵循某些基本步骤:
第一步是分配ODBC环境,初始化一些内部结构。要完成这一步,您必须分配一个SQLHENV类型的变量作为ODBC环境中的句柄。
第二步是为每个要使用的数据源分配一个连接句柄,这由函数SQLALLocHandle()完成。
第三步是使用SQLConnect()将连接句柄连接到数据库。您可以首先通过SQLSetConnectAttr()设置连接属性。
然后就可以操作SQL语句了。由于篇幅有限,不具体介绍相关功能。读者可以参考相关书籍。
操作完成后,用户可以通过检索相应的结果来取消与数据库的连接。
最后,需要发布ODBC环境。
ODBCAPI的特点是功能强大丰富,提供异步操作、事务处理等高级功能,但相应的编程复杂,工作量大。
2.MFCODBC类:封装ODBC函数的类是在MFC1.5以后的版本中引入的,这些类提供了与ODBC的接口,使得用户可以操作数据库,而不需要处理ODBCAPI中的复杂处理。主要的MFCODBC类如下。
CDatabase类:CDatabase对象表示到数据源的连接,通过该连接可以操作数据源。应用程序可以使用多个CDatabase对象:构造一个对象并调用OpenEx()成员函数来打开一个连接。然后构造CRecordSet对象来操作连接的数据源,并将记录集构造函数指针传递给CDatabase对象。完成后,使用Close()成员函数销毁CDatabase对象。一般不需要直接使用CDatabase对象,因为CRecordSet对象可以实现大部分功能。然而,CDatabase在事务处理中起着关键作用。事务是指将对数据源的一系列更新放在一起,同时提交或者根本不提交,以保证多个用户同时对数据源进行操作时数据的正确性。
CRecordSet类:CRecordSet对象表示从数据源-记录集中选择的一组记录。记录有两种形式:快照和动态集。前者表示数据的静态视图,而后者表示记录集与其他用户对数据库的更新保持同步。通过CRecordSet对象,用户可以对数据库中的记录执行各种操作。
CRecordView类:CRecordView对象是一个在空间中显示数据库记录的视图。该视图是直接连接到CRecordSet对象的格式视图。它是从对话框模板资源创建的,并在对话框模板的控件中显示CRecordSet对象的字段。使用对象DDX和RFX机制,可以自动实现格式中的控件和记录集中的字段之间的数据移动,即用户甚至不用编写一行代码就可以实现一个简单的数据库记录查看程序。
类CDBException:从类ce exception派生,它反映了在具有三个继承成员变量的数据库上操作时的异常:
M_nRetCode:以ODBC返回代码(SQL_RETURN)的形式表示异常的原因。
M_strError:描述引发异常的错误原因的字符串。[第页]
M _ strStateNativeOrigin:用于描述ODBC错误代码表示的异常的字符串。
MFC类成员函数可以抛出CDBException类型的异常,因此在代码对数据库进行操作后监视异常是正确的。
MFCODBC类功能丰富,操作相对简单,在实际开发中应用最为广泛。
3.MFCDAO(数据访问对象)编程:DAO用于与微软的Access数据库接口。当数据库应用只需要和Access数据库接口时,使用DAO编程更方便。其主要类别如下。
CDaoWorkspace:CDaoWorkspace对象允许用户管理数据库会话的整个过程,从登录到离开都受到指定密码的保护。在大多数情况下,不要创建多个工作区或显式工作区对象。因为当打开数据库和记录集对象时,它们可以使用DAO默认的工作空间。
CDaoDatabase:表示一个连接,类似于上面提到的CDatabase类。
CDaoRecordSet:用于选择一个记录集并对其进行操作,类似于上面的CRecordSet类。
CDaoRecordView:类似于上面的CRecordView类。
CDaoException:类似于上面的CDBException类。
CDaoTableDef:表示基本表或附加表的定义。每个DAO数据库对象都包含一个名为TableDef的集合,该集合包含所有存储的DAO表定义对象。CDaoTableDef对象可用于控制表定义。
CDaoQueryDef:CDaoQueryDef对象表示一个查询定义(QueryDef)。
CDaoFieldExchange:支持数据库类使用的DAO字段交换(DFX)例程。它也可以处理事务,类似于MFCODBC类。
MFCDAO仅用于支持Access数据库,应用范围相对固定。
4.OLEDB: OLEDB在数据提供者和用户之间提供了一个灵活的组件对象模型(COM)接口,这有时会使操作变得复杂。OLEDB框架定义了三类基本的应用程序。
DataProvider数据提供者:拥有自己的数据并以表格形式显示数据的应用程序。提供OLEDB的rowset COM接口,从单一数据表的简单提供者到更复杂的分布式数据库系统都可以知道显示范围。
消费者消费者:使用OLEDB接口控制存储在数据提供者中的数据的应用程序。用户应用程序被分类为使用类别。
ServiceProvider服务提供者:是数据提供者和消费者的结合体。服务提供者没有自己的数据,而是使用
OLEDB用户界面来访问存储在数据提供程序中的数据。然后,服务提供者通过开放数据提供者接口向消费者提供数据。服务提供者通常用于向应用程序提供高级服务,例如高级分布式查询。
OLEDB编程时,用户使用组件对象来开发应用程序。这些组件是:
枚举器:用于列出可用的数据源;
数据源:表示单独的数据和服务提供者,用于创建对话;
对话框:用于创建事务和命令;
事务:用于将多个操作合并成一个事务;
Command:用于向数据源发送文本命令(SQL)并返回行集;
Error:用于获取错误信息。
5.ActiveX数据对象(ADO):是微软提供的面向对象的接口。它类似于OLEDB,但界面更简单,具有更广泛的功能和更高的灵活性。基于COM,ADO提供了可以在编程语言中使用的对象。除了VC,还提供了其他开发工具的应用,比如VB,VJ等等。ADO在服务器应用中非常有用,特别是对于动态服务器页面ASP(ActiveServerPage)。
ADO对象结构类似于OLEDB,但它不依赖于对象层次结构。在大多数情况下,用户只需要创建和使用需要处理的对象。以下对象类组成了ADO接口。
Connection:用于表示与数据库的连接,处理一些命令和事务。
命令:用于处理发送给数据源的命令。
记录集:一组用于处理数据的表,包括获取和修改数据。
Field:用于表示记录集中的列信息,包括列值和其他信息。
参数:用于在发送到数据源的命令之间来回传输数据。
属性:使用和操作ADO中使用的其他对象的详细属性。
错误:用于获取可能错误的详细信息。
在VC中使用ADO需要COM操作,详细方法在此不再赘述。在当今流行的分布式开发环境下,VC 6.0在数据库开发方面具有很强的优势。开发者需要学会在不同的情况下选择不同的技术。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。