在ODBC中应用DDX和RFX

MFC 记录字段交换(RFX)学习 MFC ODBC 数据库类可自动移动数据源与记录集对象之间的数据。 阅读详情

在ODBC中应用DDX和RFX
      
MFC中ODBC类库简介

---- MFC 中 针 对ODBC 数 据 库 编 程 提 供 了 五 种 基 类。 这 些 类 封 装 了 有 关ODBC 的API 调 用, 使 用 户 能 够 利 用ODBC 完 成 不 同 类 型 的 数 据 库 编 程 工 作, 如 访 问Foxpro、dBASE 或Sybase 等 不 同 类 型 数 据 库 文 件, 从 而 避 开 各 种 类 型 数 据 库 文 件 的 复 杂 的 内 部 结 构。 这 五 种 基 类 是:

CDatabase 类 对 象 表 示 与 数 据 源 的 连 接。 用 户 正 是 基 于 此 连 接 实 现 对 数 据 源 的 操 作。

CRecordset 类 对 象 表 示 了 从 数 据 源 中 选 出 的 一 组 记 录。 该 对 象 使 用 户 能 完 成 在 记 录 间 的 滚 动、 更 新 记 录、 对 记 录 进 行 过 滤 排 序 等 操 作。

CRecordView 类 对 象 直 接 与 一CRecordset( 记 录 集) 类 对 象 连 接, 为 该 记 录 集 提 供 显 示 的 视 图。 它 是 数 据 库 操 作 的 界 面。

CFieldExchange 类 支 持 数 据 库 的 字 段 交 换 过 程, 即RFX 机 制。

CDBException 类 完 成 数 据 库 类 操 作 的 异 常 处 理。 用 户 可 根 据 其 中 公 用 成 员 变 量 的 取 值 来 分 析 出 现 错 误 的 原 因 或 显 示 出 相 应 的 文 本 信 息。
---- 以 下 我 们 利 用VC 中 的AppWizard 生 成 一 个 简 单 的 示 例 程 序 以 供 使 用:

---- 1. 选 择[File] 中 的[New], 在 弹 出 的 对 话 框 中 选 择 文 件 类 型 为[MFC AppWizard(EXE)]。 在[Project name] 中 键 入 文 件 名, 如:testodbc, 点 按[OK] 按 钮。

---- 2. 在 程 序 类 型 中 选 择[Single document], 点 按[Next] 按 钮。

---- 3. 在 数 据 库 支 持 中 选 择[Database view with file support], 点 按[Data source] 按 钮 进 入 数 据 库 选 择 对 话 框。

---- 4. 在[Datasource] 中 选 择[ODBC], 然 后 在 下 拉 列 表 中 选 择 [Visual Foxpro Tables]。[Recordset type] 设 定 为[Snapshot]。 点 按[OK] 按 钮 选 择 数 据 库 源 文 件:test.dbf。

---- 5. 择 了 数 据 库 源 文 件 后, 接 连 点 按[Next], 生 成 程 序 所 需 的 源 文 件。

---- 此 时 生 成 以 下 各 类 及 其 对 象:

CAboutDlg

CMainFrame

CTestodbcApp

CTestodbcDoc

CTestodbcSet

CTestodbcView
RFX 简 介
---- RFX 是Record Field Exchange 的 缩 写, 意 即 记 录 字 段 数 据 交 换。 它 在 用 户 选 择 的 记 录 集(Data set) 和 隐 藏 于 后 台 的 数 据 源(Data source) 之 间 建 立 对 应 关 系, 使 用 户 能 通 过 操 作 此 记 录 集 来 实 现 对 数 据 源 的 操 作。MFC 中 提 供 了 一 系 列RFX 调 用 函 数, 通 过 这 些 函 数, 可 以 随 时 在 记 录 集 和 数 据 源 之 间 进 行 数 据 交 换, 这 种 交 换 是 双 向 的。 这 些 函 数 有:

 函 数 数 据 类 型
RFX_Bool BOOL
RFX_Byte BYTE
RFX_Binary CByteArray
RFX_Double double
RFX_Single float
RFX_Int int
RFX_Long lonig
RFX_LongBinary CLongBinary
RFX_Text CString
RFX_Date Ctime

---- 它 们 大 多 有 三 个 参 数( 个 别 会 有 四 或 五 个):

一 个 指 向CFieldExchange 类 对 象 的 指 针;

数 据 源 中 的 一 个 字 段 名;

与 该 字 段 对 应 的 变 量 名。
---- 当 用AppWizard 生 成 代 码 时, 程 序 会 自 动 选 择 适 当 的 函 数 与 数 据 类 型 相 匹 配。

---- 记 录 字 段 数 据 交 换 的 核 心 是CRecordset 类 中 的 虚 函 数DoFieldExchange,RFX 函 数 都 在DoFieldExchange 中 调 用, 它 为RFX 函 数 提 供 了 一 个 指 向CFieldExchange 类 对 象 的 指 针, 其 原 型 为:

---- virtual void DoFieldExchange(CFieldExchang ? pFX);

---- 上 文 示 例 中 生 成 的CTestodbcSet 类 是 从CRecordset 派 生 而 来 的, 为 了 利 用RFX 机 制, 它 声 明 了 两 个 成 员 变 量:Cstring m_name 和Cstring m_age, 分 别 对 应 数 据 库 表 文 件 中 的[name] 和[age] 字 段。 在CTestodbcSet 类 重 载 的 方 法DoFieldExchange(CFieldExchange * pFX) 中, 可 以 看 到 调 用 了 两 个RFX 函 数:

---- RFX_Text(pFX, _T(“[name]”), m_name);

---- RFX_Text(pFX, _T(“[age]”), m_age);

---- pFX 参 数 即 为DoFieldExchange 传 递 来 的CFieldExchange 类 对 象 指 针。

DDX 简 介
---- DDX 是Dialog Data Exchange 的 缩 写, 意 即 对 话 框 数 据 交 换。 它 在 对 话 框 的 可 视 控 件(Controls) 和 成 员 变 量(Member variables) 之 间 建 立 双 向 的 对 应 关 系, 使 用 户 能 通 过 对 话 框 上 的 控 件 浏 览 和 修 改 变 量 的 取 值。

---- 类 似 记 录 字 段 数 据 交 换, 对 话 框 数 据 交 换 的 核 心 是CRecordView 类 中 的 虚 函 数DoDataExchange,DDX 函 数 都 在DoDataExchange 中 调 用, 它 为DDX 函 数 提 供 了 一 个 指 向CDataExchange 类 对 象 的 指 针, 其 原 型 为:

---- virtual void DoDataExchange(CDataExchan ? pDX);

---- 进 入 函 数Ctestodbc::DoDataExchange, 此 时 函 数 体 中 没 有 什 么 代 码, 因 为 我 们 并 没 有 在 对 话 框 中 创 建 控 件, 也 没 有 建 立DDX 机 制。

---- 打 开 示 例 程 序 的 对 话 框 资 源, 编 辑 自 动 生 成 的 对 话 框IDD_TESTODBC_FORM, 此 时, 该 对 话 框 中 仅 有 一 个 静 态 文 本 对 象“TODO: Place form controls on this dialog.”。 它 是 自 动 生 成 的 提 示 性 文 本, 表 示 可 在 此 对 话 框 上 添 加 控 件。 删 掉 此 文 本, 添 加 两 个 编 辑 框 对 象(Edit box)IDC_EDIT1 和IDC_EDIT2, 在IDC_EDIT1 上 按 鼠 标 右 键, 选 择 弹 出 菜 单 中 的[ClasWizard] 进 入 类 属 性 编 辑 对 话 框。 选 择[Member Variables] 属 性, 在[Control IDs] 中 选 择IDC_EDIT1, 然 后 按[Add Variable] 按 钮 以 选 择 与 它 对 应 的 变 量, 在 下 拉 列 表 框[Member Variable name] 中 选 择m_pSet -$#@62;m_name, 按[OK] 返 回。 用 同 样 方 法 为IDC_EDIT2 选 择m_pSet -$#@62;m_age。

---- 退 出 对 话 框 编 辑, 再 进 入 类CTestodbcView 源 文 件 中, 发 现 函 数DoDataExchange 中 增 加 了 两 个DDX 调 用 函 数:

---- DDX_FieldText(pDX, IDC_EDIT1, m_pSet -$#@62;m_name, m_pSet);

---- DDX_FieldText(pDX, IDC_EDIT2, m_pSet -$#@62;m_age, m_pSet);

---- DDX_FieldText 函 数 在 对 话 框 的 编 辑 控 件 和 记 录 的 字 段 之 间 建 立 联 系。 它 可 以 自 动 管 理 以 下 类 型 的 数 据:int、short、long、DWORD、Cstring、float、double、BOOL 和BYTE。 它 的 四 个 参 数 分 别 为:

一 个 指 向CDataExchange 类 对 象 的 指 针;

与 数 据 交 换 相 关 的 对 话 框 控 件 的ID 号;

记 录 中 的 一 个 字 段;

与 数 据 交 换 相 关 的 记 录 集 对 象 指 针。
---- 在DDX 双 向 数 据 交 换 中, 用 户 不 直 接 调 用DoFieldExchange 函 数, 而 是 调 用 函 数UpdateData(BOOL direct), 此 函 数 的direct 参 数 决 定 了 数 据 交 换 的 方 向:

---- direct=FALSE 用 记 录 的 字 段 值 更 新 控 件 值

---- direct=TRUE 用 控 件 值 更 新 记 录 的 字 段 值

---- 例 如 我 们 在 对 话 框 中 添 加 一 个[Save] 按 钮, 在 它 的 事 件 处 理 过 程 中 将 控 件 的 值 保 存:

void CTestodbcView::OnButtonSave()
{
.. .. ..
UpdateData(TRUE);
.. .. ..
}
DDX 和RFX 的 关 系 及 比 较
---- 从 上 面 可 以 看 出,RFX 是 数 据 库 编 程 中 数 据 交 换 的 内 部 基 础, 它 更 紧 密 地 与 记 录 集 对 象(CRecordset) 相 联 系, 是 隐 于 后 台 的;DDX 是 数 据 库 编 程 中 数 据 交 换 在 对 话 框 界 面 上 实 现 的 基 础, 它 更 紧 密 地 与 视 图 对 象(CRecordView) 相 联 系, 是 显 现 于 前 台 的。 最 后 我 们 用 一 幅 图 更 直 观 地 展 示 它 们 的 关 系:

HX720数据采集实战:从硬件连接到姿态解析(含避坑指南) 本文详细介绍了HX720高精度ADC芯片在数据采集与姿态解析项目中的实战应用。内容涵盖从硬件电路设计、驱动源码编写与优化,到原始数据处理、校准以及最终姿态角度计算的完整流程,并提供了关键的避坑指南和调试技巧,帮助开发者高效完成从传感器信号到可用姿态数据的转换。 阅读详情

相关推荐

Nordic开发者必备:SEGGER Embedded Studio免费许可证申请与配置全攻略

本文为Nordic芯片开发者提供了SEGGER Embedded Studio(SES)集成开发环境的详细配置指南。内容涵盖免费许可证的合规申请流程、项目创建、Nordic SDK集成,以及编辑器优化、构建调试配置、RTT日志输出等核心功能的高效设置,旨在帮助开发者构建深度优化的专业开发环境,显著提升嵌入式开发效率。

cheese的博客 353

MFC ODBC数据操作编程

为了简化开发人员编写数据库应用程序,VC++的在其基础类库(MFC)里对ODBC API进行了封装,实现了一个面向对象的数据库编程接口,使VC++的数据库变得更加容易。 本章首先对MFC ODBC的概貌进行简要介绍,然后讲述利用MFC ODBC进行数据库开发的技巧,最后将通过具体数据库开发实例,详细讲述通过MFC ODBC开发数据库应用程序的方法和过程。 6.1 了解MFC ODB

拥抱变化 1万+

企业微信/飞书/钉钉扫码连WiFi保姆级教程(附访客授权技巧)

本文提供了一份企业微信、飞书、钉钉扫码连接WiFi的实战部署教程。通过集成标准Radius协议与OAuth 2.0,企业可实现基于身份的无密码网络认证,并详细介绍了访客授权、权限分级等精细化管理技巧,有效提升无线网络的安全性与员工体验。

t4y5u6i7o的博客 1194

VC++的DDX/DDV机制

<br />C++的MFC类库中为用户提供了在对话框控件和数据变量间交换数据的<br />        DDX/DDV(数据交换/数据验证)机制,而在此之前,用户只能通过调用<br />        GetDlgItemInt或etDlgItemText等函数这样麻烦的过程来达到同样的目的。<br />        当你要为控制增加DDX/DDV支持时,APP WIZARD和CLASS WIZARD将为你完成<br />        大部分工作。你只需要在CLASS WIZARD中为你的控制ID添加

feixiangmenghuan的专栏 8582

HPE磁盘阵列管理04——MSA事件

本文介绍了HPE MSA存储系统的事件处理机制,重点分析了常见磁盘故障事件及其解决方案。文章首先定义了MSA事件的五个严重级别(严重、错误、警告、信息和解决),然后详细列举了多个典型事件案例(如事件1、3、6、8、172等),包括每种事件的触发条件、对系统的影响以及具体修复步骤。针对磁盘故障场景,文章提供了更换磁盘、重建磁盘组、取消隔离等操作建议,并强调应及时配置备用磁盘以降低数据风险。最后指出更详细的事件说明可参考《MSA事件描述参考指南》,并提供了HPE官方手册下载链接。全文为技术人员处理MSA存储故障

istrangeboy&begin zero的博客 1121

两层板如何做阻抗控制呢

两层板如何做阻抗控制呢? 这个问题可能很多人都会碰到,有的人在此等需要做阻抗控制的情况都选择做多层板。诚然,多层板在阻抗控制,EMC等等方面都有着天然的优势。然而,在价格上和周期上,两层板就有着绝对优势了。 对于成本非常敏感而又不是太复杂的产品,尽管对于我们硬件工程师而言,有一堆的理由要求使用多层板。然而在面对毛都不懂的老板“别人能做,你为什么不能做?”这个问题时只得低下我们高傲的头颅。 好...

weixin_42005993的博客 2万+

cdatabase连接mysql_CDatabase类 数据库操作

10.5CRecordset类CRecordset类代表一个记录集.该类是MFC的ODBC类中最重要、功能最强大的类。10.5.1动态集、快照、光标和光标库在多任务操作系统或网络环境中,多个用户可以共享同一个数据源。共享数据的一个主要问题是如何协调各个用户对数据源的修改。例如,当某一个应用改变了数据源中的记录时,别的连接至该数据源的应用应该如何处理。对于这个问题,基于MFC的ODBC应用程序可以采...

weixin_42395725的博客 939

74、光谱成像在电子内窥镜及色彩理论中的应用

本文探讨了光谱成像在电子内窥镜中的应用及其与色彩理论的深度融合。通过分析FICE技术、色彩再现模型及胃黏膜光谱测量,展示了光谱信息在提升医学诊断准确性方面的潜力。同时,系统阐述了颜色的物理属性、标准表示方法、同色异谱现象、颜色测量技术(密度法与比色法)以及CIELAB等均匀颜色空间的构建原理。结合流程图与对比表格,梳理了从光信号获取到颜色处理的完整路径,并展望了人工智能与新型视觉模型在未来医疗成像与色彩科学中的发展方向。

g2h3i4j5的博客 152

ODBC中的FX/Bulk RFX数据交换机制分析

        前言  ODBC(Open DatabaseConnectivity,开放式数据库连接)提供了一种统一访问数据库的接口,MFC ODBC数据库类将ODBCAPI函数进行了封装,可以避免直接使用ODBCAPI时大量代码的编写,大大简化了ODBC数据库开发的编程工作。用于在数据源和记录集对象之间进行数据交换的::SQLBindCol函数在MFCODBC下也由RFX()所

snail8384的专栏 744

手把手教你学Simulink——基于Simulink的固态变压器(SST)多级协同控制

摘要:本文详细介绍了基于Simulink的固态变压器(SST)多级协同控制方法。SST作为新一代智能电网核心设备,通过AC-DC整流、DC-DC隔离和DC-AC逆变三级架构实现电能高效转换。针对多级耦合难题,提出能量-功率协同控制策略:纵向解耦电压环与功率前馈,横向联动级间功率指令。在Simulink中搭建10kV/400V系统模型,实现直流母线电压波动<2%的动态性能。特别设计了负载突变时的三级协同机制,通过虚拟惯性算法和前馈控制实现快速响应。文章包含完整的建模步骤、控制推导和参数设置,为电力电子工

MHD0815的博客 195

BES2810_best1702_best1702_ibrt_三者关系深度解析

一颗芯片的三个名字:BES2810、best1702 与 best1702_ibrt 关系深度解析

weixin_42162924的博客 349

在 ODBC 中应用DDX 和 RFX

 在 ODBC 中应用DDX 和 RFXMFC 中ODBC 类库简介----MFC 中针对ODBC数据库编程提供了五种基类。这些类封装了有关ODBC的API调用,使用 户能够利用ODBC完成不同类型的数据库编程工作,如访 问Foxpro、dBASE 或Sybase 等不同类型数据库文件,从而避开各种类型数据库文件的复杂的内部结构。这五种基类是:CDatabase 类对象表示与数据源的连接。用户

freexj的专栏 794

《Claude Code 实战》第 1 章:开启智能编程新纪元——初识 Claude Code

简单来说,Claude Code 是 Anthropic 公司推出的一款基于 Claude 3.7 Sonnet 等大语言模型的强大编程工具。但与传统的 ChatGPT 或普通的聊天机器人不同,Claude Code 具备了"动手"的能力。它不仅会"说",更会"做"。想象一下,你不再需要描述复杂的命令行参数,也不需要为了修改一个配置文件而频繁切换编辑器。Claude Code 可以直接读取你项目中的文件、理解复杂的代码库结构、执行终端命令,并直接为你生成或修改代码。

AI天才研究院 245

在ODBC 中 应 用DDX 和RFX (转)

在ODBC 中 应 用DDX 和RFX (转)[@more@]windows/images/1ptrans.gif" width=480> 在OdbC 中 应 用DDX 和RFX MFC 中ODBC 类 库 简 介 ...

csd3176的博客 151

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

在ODBC 中 应 用DDX 和RFX

在ODBC 中 应 用DDX 和RFXMFC 中ODBC 类 库 简 介---- MFC 中 针 对ODBC 数 据 库 编 程 提 供 了 五 种 基 类。 这 些 类 封 装 了 有 关ODBC 的API 调 用, 使 用 户 能 够 利 用ODBC 完 成 不 同 类 型 的 数 据 库 编 程 工 作, 如 访 问Foxpro、dBASE 或Sybase 等 不 同 类 型 数 据

596

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

MFC--ODBC数据交换RFX

MFC中ODBC类库简介 ---- MFC 中 针 对ODBC 数 据 库 编 程 提 供 了五 种 基 类。 这 些 类 封 装 了 有 关ODBC 的API 调 用, 使 用 户 能 够 利 用ODBC 完 成 不 同 类型 的 数 据 库 编 程 工 作, 如 访 问Foxpro、dBASE 或Sybase 等 不 同 类 型 数 据 库 文 件, 从而 避 开 各 种 类 型 数 据

ylwdi的专栏 1033

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

MFC ODBC数据库编程

一、MFC提供的ODBC数据库类  Visual C++的MFC基类库定义了几个数据库类。在利用ODBC编程时,经常要使用到 CDatabase(数据库类)、CRecordSet(记录集类)和CRecordView(可视记录集类)。   CDatabase类:提供了对数据源的连接,通过它可以对数据源进行操作。  CRecordSet类:提供了从数据源中提取出的记录集。CReco

1435

MFC ODBC 用法

MFC ODBC 用法(转载)   主要内容:  MFC ODBC将ODBC API封装在类CDatabase、CRecordSet、CFieldExchange、CRecordView和CDBException中  使用MFC ODBC开发数据库应用程序的一般步骤  使用AppWizard访问数据库  使用类CDatabase连接数据库  使用类CRecordSet打

michellebaby的专栏 1135

VC++数据库编程核心技术:MFC ODBC类深度解析与实战优化

数据库编程是连接应用程序与数据存储的核心技术,其本质在于通过标准化的接口协议实现高效、安全的数据交换。在C++生态中,ODBC作为跨数据库的统一接口基石,提供了驱动程序管理器与驱动程序的标准化调用层,确保了应用程序与多种数据库的兼容性。这一原理为上层封装框架奠定了技术基础,其价值在于平衡了开发效率与底层控制力,尤其适用于对性能与资源有严苛要求的金融、工业控制等场景。MFC ODBC类库正是基于此构建的经典封装,通过CDatabase和CRecordset等核心类,将ODBC API的面向过程调用转化为面向对

weixin_33739646的博客 825
上一篇: 在Visual C++中用ADO进行数据库编程(中)
下一篇: 在Visual C++中用ADO进行数据库编程(上)
普通网友
博客等级 码龄22年 1万+粉丝 3156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值