mfc项目通过odbc连接mysql_MFC ODBC 用法|非常详细|正在用(转载)

主要内容:

MFC ODBC将ODBC API封装在类CDatabase、CRecordSet、CFieldExchange、CRecordView和CDBException中

使用MFC ODBC开发数据库应用程序的一般步骤

使用AppWizard访问数据库

使用类CDatabase连接数据库

使用类CRecordSet打开记录集、获取数据

使用类CRecordSet的函数MoveFirst()、MoveLast()、MoveNext()、MovePrev()、IsBOF()和IsEOF()进行记录集的遍历

使用类CRecordSet的函数AddNew和Update增加记录

使用类CRecordSet的函数Edit和Update修改记录

使用类CRecordSet的函数Delete删除记录

使用类CDatabase的函数ExecuteSQL直接执行SQL命令

使用类CDatabase的函数BeginTrans、CommitTrans和Rollback处理事务

MFC OBDC技术

概述

MFC的ODBC类对较复杂的ODBC API进行了封装,提供了简化的调用接口。MFC的ODBC类主要包括以下5个类:

CDatabase类:主要功能是建立与数据源的连接

CRecordset类:代表从数据源选择的一组记录(记录集)

CRecordView类:提供了一个表单视图与某个记录集直接相连,利用对话框数据交替机制(DDX)在记录集与表单视图的控件之间传输数据

CFieldExchange类:支持记录字段数据交换(RFX),即记录集字段数据成员与相应的数据库的表的字段之间的数据交换。

CDBException类:代表ODBC类产生的异常。

CDatabase类操作数据源

CDatabase类型的对象表示一个到数据源的连接,通过它可以操作数据源。

该类的成员函数如下表:

函数

说明

CDatabase

构造一个对象

Close

关闭数据源连接

Open

通过一个ODBC驱动程序创建到数据源的连接

OpenEx

通过一个ODBC驱动程序创建到数据源的连接

BeginTrans

开始事务

BindParameters

允许在调用CDatabase::ExecuteSQL前绑定参数

Cancel

取消异步操作或第二条线程中的过程

CommitTrans

执行事务

ExecuteSQL

执行SQL语句,不返回记录

Rollback

回滚事务,数据源返回先前的状态

该类的属性属性如下表:

属性

说明

CanTransact

如果数据源支持事务,返回非零

CanUpdate

如果CDatabase可以更新,返回非零

GetBookmarkPersistence

获得书签对记录集对象的持久性

GetConnect

返回ODBC连接串

GetCursorCommitBehavior

获得提交事务对记录集对象的影响

GetCursorRollbackBehavior

获得回滚事务对记录集对象的影响

GetDatabaseName

返回当前使用的数据库名

IsOpen

如果当前CDatabase对象连接到数据源,返回非零

SetLoginTimeout

设置数据源连接的超时数(秒为单位)

SetQueryTimeout

设置查询操作的超时数(秒为单位)

应用程序可使用多个CDatabase类型的对象。构造一个对象并调用Open()成员函数打开一个连接。接着构造CRecordset类型的对象以操作连接的数据源,构造时向记录集对象传递CDatabase类型的指针。完成使用后,用Close()成员函数销毁CDatabase类型的对象。

一般情况下并不需要直接使用CDatabase类型的对象,因为CRecordset类型的对象可以实现大多数的功能、但是在进行事务处理时,CDatabase就起到关键作用。事务(Transaction)指的是将一系列对数据源的更新放在一起,同时提交或一个都不提交,为的是确保多用户对数据源同时操作时的数据正确性。

CRecordset类操作记录集

一个CRecordset类型的对象代表从数据源选择的一组记录的集合——记录集,通过该类的方法实现对数据库中记录的各种操作。

该类常用的数据成员如下表:

成员

说明

m_hstmt

包含记录集的ODBC陈述句柄,类型为HSTMT

m_nFields

包含记录集中字段数据成员的数量,类型为UNIT

m_nParams

包含记录集中参数数据成员的数量,类型为UNIT

m_pDatabase

包含一个CDatabase对象指针,通过它访问数据源

m_strFilter

包含CString对象,定义SQL中WHERE子句

m_strSort

包含CString对象,定义SQL中ORDER BY子句

该类的构造方法如下表:

构造方法

说明

Close

关闭记录集和与之相关的HSTMT

CRecordset

构造一个CRecordset对象

Open

通过获得表或执行记录集所代表的查询来打开记录集

CRecordset类记录集属性如下表:

属性

说明

CanAppend

如果新记录可以通过Addnew添加到记录集,返回非零

CanBookmark

如果记录集支持书签,返回非零

CanRestart

如果Requery可以被调用来再次运行记录集查询,返回非零

CanScroll

如果可以在记录中回滚,返回非零

CanTransact

如果数据源支持事务,返回非零

CanUpdate

如果记录集可以被更新,返回非零

GetODBCFieldCount

返回记录集中字段的数量

GetRecordCount

返回记录集中记录的数量

GetSQL

获得SQL字符串

GetStatus

获得记录集的状态

GetTableName

获得记录集所属的表名

IsBOF

如果记录集定位在第一条记录之前,返回非零

IsDeleted

如果记录集定位在一条删除的记录,返回非零

IsEOF

如果记录集定位在最后一条记录之后,返回非零

IsOpen

如果调用过Open函数,返回非零

CRecordset类更行操作如下表:

更新操作

说明

AddNew

准备增加一条新纪录,调用Update之后完成添加

CancelUpdate

取消任何未完成的更新

Delete

从记录集中删除当前记录

Edit

准备对当前记录进行修改,调用Update后完成修改

Update

通过将新记录或编辑的数据存入数据源来完成AddNew或Edit操作

记录集有两种形式:snapshot(表示数据的静态视图)和dynaset(表示记录集与其他用户对数据库的更新保持同步)。

CFieldExchange类处理数据交换

CFieldExchange类支持数据库类所使用的记录集字段交换(RFX)程式。如果使用自定义的数据类型写数据交换程式,会使用这个类。否则不会直接使用此类。RFX在记录集对象的字段数据成员与数据源中当前记录的相应字段之间交换数据。

CRecordView类显示记录

CRecordView对象用于在控件中显示数据库记录的视图。这种视图是一种直接连到一个CRecordView对象的格式视图,它从一个对话框模板创建资源,并将CRecordView对象的字段显示在对话框模版的控件里。对象利用DDX和RFX机制,使窗体上的空间和记录集的字段值之间数据移动自动化,也就是说,用户不需要编写一行代码就可以完成简单的数据库记录查看程序。

CDBException类处理异常

由CException类派生,以3个继承的成员变量反映对数据库操作时的异常:

m_nRetCode:以

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值