MFC数据库操作系列—数据中间层(CRECORDSET)
MFC数据库接口分为两种:ODBC和OLE DB 。ODBC而言提供开放的访问方式,使用较为简单,但是需要注册数据库,这导致在部署应用程序的时候需要重新布置数据库,并且个人意见:数据库操作不涉及大量的数据交换建议使用。
CRECORDSET为数据库和应用程序之间交换数据提供和很好的封装。掌握CRECORDSET必要的字段和方法功能就能够顺利的开发出应用程序。
CRECORDSET是具体应用程序的数据中间层得基类,提供基本的数据操作。
具体操作:
1. 创建派生于CRECORDSET的类,
2. 正确的getdefaultconnection的返回值和getdefaultcommand的返回值。
3. 创建好命令和链接后调用函数open,启动数据查询。
4. 读取获取的值,各个列的值。
5. 获取下一列只需要调用movenext方法。然后读取各个字段的值。
6. Close方法关闭。
注意:打开数据集后的GetRecordSet的返回值并不是数据集中的记录数量,遍历所有记录,将自动改变数据记录数量。
修改数据库内容:
1. 调用edit方法;
2. 修改需要修改的字段
3. 调用update方法
注意:如果需要修改数据库则需要在打开模式中指定为dynaset,也可定为dynamic,但是一些系统不支持dynamic。
数据库修改多张表格。
和单表操作一样,但是需要注意几个地方:
1. 数据集的构造函数中需要正确的指出字段的数量;
2. 定义public的成员变量的目的在于其余类可以访问数据信息。所以数据成员可以随便定义。
3. 在DoFieldExchange函数中设置正确的数据类型交换函数。注意此处的DDX_XXX中的第二个参数是字段的名称。可以是sql中任何的合法字段名,可以不加【】;
存储过程
1. 调用open方法,或者在getdefaultsql函数中返回值设置。
2. 调用形式为{call procedure(parameters…..)}的sql语句,其中procedure为存储过程名称;parameters为存储过程参数。
3. 在DoFieldExchange()中设置参数的方向和值:
// output parameter pFX->SetFieldType(CFieldExchange::outputParam);
RFX_Long(pFX, _T("Instructor_Count"), m_nCountParam);
// input parameter
pFX->SetFieldType(CFieldExchange::inputParam);
RFX_Text(pFX,_T("Department_Name"), m_strNameParam);
4. 调用结束
一般的数据操作就这样完成。