| 单独使用CRecordSet | ||||||||||||||
| 闻怡洋 wyy_cq@21cn.com http://www.vchelp.net/ | ||||||||||||||
|
一般情况下AppWizard会在数据库应用程序中自动产生CRecordset的派生类,并将派生类和某个数据源中的表联系起来也可以和视图上的子窗口联系起来。但是有时这样做会影响到程序的灵活性,这时候我们可以单独使用CRecordSet类。利用CRecordSet类我们可以执行SQL语句,并可以读出结果集中数据。 首先我们需要包含头文件afxdb.h,可以将#include 添加到stdafx.h文件中。此外在使用CRecordset时必须有一个又一个CDatabase对象,该对象的作用是管理数据源连接。然后可以产生一个CRecordset对象,利用BOOL CRecordset::Open( UINT nOpenType = AFX_DB_USE_DEFAULT_TYPE, LPCTSTR lpszSQL = NULL, DWORD dwOptions = none )可以执行SQL语句。 但执行成功后,可以调用以下的函数滚动光标,读取数据。
/*
假设CDatabase m_dbConn为成员变量
假设有一个表有如下SQL语句产生:CREATE TABLE table1(loc_id not null)
*/
void CYourClass::ConnectToDB()
{//连接数据库
BOOL fOK = m_dbConn.Open("test");
TRACE("connect fOK=%d/n",m_dbConn);
}
void CYourClass::Select()
{//执行SELECT语句
CRecordset rec(&m_dbConn);
BOOL fOK = rec.Open(CRecordset::forwardOnly,"select loc_id from table1 order by loc_id");
TRACE("select fOK = %d/n",fOK);
TRACE("返回的列数为:%d/n",rec.GetRowsetSize());
CString szResult;
while(!rec.IsEOF())
{
rec.GetFieldValue((int)0,szResult);
rec.MoveNext();
TRACE("fetch : %s/n",szResult);
}
}
此外CRecordset::GetFieldValue有很多种原型,你可以通过指定列位置或是字段名来获取数据: void GetFieldValue( LPCTSTR lpszName, CDBVariant& varValue, short nFieldType = DEFAULT_FIELD_TYPE ); 如果使用CDBVariant类型变量来获取结果,你可以得到任何类型的结果。在CDBVariant::m_dwType成员变量中记录了该变量所包含的数据类型,根据该变量的值你可以确定数据类型并引用CDBVariant对象中的相应成员变量。下载本文示范代码 |
相关推荐
MFC仓库管理系统实战:数据库事务与界面优化全解析
MFC作为Windows桌面应用开发的经典框架,其核心价值在于紧贴Win32 API、调试直观、教学适配度高,特别适合课程设计与轻量级本地业务系统开发。理解CRecordset数据封装、CDatabase事务控制(BeginTrans/CommitTrans)、虚拟列表(LVS_OWNERDATA)性能优化等关键技术,是保障超市仓库类系统数据强一致性与交互流畅性的基础。结合ODBC数据库连接、DDX/DDV数据绑定、GDI打印等原生能力,MFC能以极低依赖实现入库单生成、库存联动更新、滞销预警等闭环业务逻辑
CSqliteRecordSet类
Sqlite数据库类,用法与CRecordset基本类似,可以方便的转换用微软写的数据库操作代码到Sqlite数据库,此类还会不断完善。支持的函数如下: Open Close IsOpen IsEof IsBOF AddNew Update Delete MoveNext MovePrev MoveFirst
VC_MFC中CRecordset类详解
CRecordset类的详细说明和MFC中使用CRecordset类的详细方法
单独使用CRecordSet
闻怡洋 wyy_cq@21cn.com http://www.vchelp.net/ 一般情况下AppWizard会在数据库应用程序中自动产生CRecordset的派生类,并将派生类和某个数据源中的表联系起来也可以和视图上的子窗口联系起来。但是有时这样做会影响到程序的灵活性,这时候我们可以单独使用CRecordSet类。利用CRecordSet类我们可以执行SQL语句,并可
CRecordset类学习记录
这里写自定义目录标题CRecordset类简介快照和动态集的区别CRecordset类成员数据成员构造记录集属性记录集更新操作记录集定位操作其他记录集操作记录集重载函数 CRecordset类简介 CRecordset对象代表从一个数据源选择的一组记录的集合,被称作“记录集”。CRecordset对象可以以两种形式使用:动态集和快照。动态集是与其它用户的更新保持同步的动态数据集。快照是数据的静态视图。每一种形式都代表打开记录集时固定的一组记录。但是当滚动到动态集中的一个记录时,动态集将反映后来由其它用户或由
CRecordset类的常用成员函数 成员变量 以及操作实例
CRecordset类的常用成员函数 成员变量 以及操作实例 Open() : 打开记录集,在CRecordse类负责的一个表中,将该表看做是一个记录集,即一个数据库中的表的元组对应一个记录,表的所有元组就是一个记录的集合。 AddNew():将一个新的记录插入到表中 Update() 完成AddNew() 或 Edit()操作之后,调用该函数在内存中的数据
_RecordsetPtr使用方法
_RecordsetPtr智能指针,它是专门为通过记录集操作数据库而设立的指针,通过该接口可以对数据库的表内的记录、字段等进行各种操作。 要搞清楚:数据库和ADO的记录集是两个不同的概念, 是存在于不同物理位置的两个存储空间。 记录集相当于是实际数据的一份拷贝。 正因为记录集是相对脱离数据库而存在的, 所以才存在后面将要介绍的Open方法中涉及的光标类型和锁定类型这两个问题。
MFC ODBC 用法
主要内容: ? MFC ODBC将ODBC API封装在类CDatabase、CRecordSet、CFieldExchange、CRecordView和CDBException中 ? 使用MFC ODBC开发数据库应用程序的一般步骤 ? 使用AppWizard访问数据库 ? 使用类CDatabase连接数据库 ? 使用类CRecordSet打开记录集、获取数据
VC的若干实用小技巧(=)
11:怎样快速生成一个与现有项目除了项目名外完全相同的新项目? 利用File菜单下生成新项目中的Custom AppWizard ,选择 An existing Project ,然后选择现有项目的项目文件名(*.dsp)Finish,编译后就生成一个可以生成与现有项目相同但可以重新取名的项目的AppWizard。你可以象用MFC AppWizard一样用它。如果不想用了,可以在VC 安装目录
网络课设总结(三)——VC++应用技巧
<br />一、网站推荐<br />1、VC知识库:http://www.vckbase.com/<br />2、VC在线:http://www.vczx.com/<br />3、google、百度,呵呵,要善于利用网络资源,在l论坛上提问的时候要学会提问,具体可以看一篇文章《提问的艺术》,在我资源里面可以下载。<br />二、常用技巧<br /> 1:使用vc开发项目时,常会遇到这种情况: <br /> 即明明只改动了一个文件,却要把整个项目全部重新编译连接一次。刚刚连接好,一运行,又提示重新编译
MFC数据库操作 - 获取数据库内容
//定义 _RecordsetPtr 型变量; HRESULT hr; _RecordsetPtr pRentRecordset; hr = pRentRecordset.CreateInstance(__uuidof(Recordset)); if (FAILED(hr)) { MessageBox(_T("创建记录集对象失败.")); return; } //调用其 Ope
数据库编程总结
当前各种主流数据库有很多,包括Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, TimesTen, MS ACCESS等等。数据库编程是对数据库的创建、读写等一列的操作。数据库编程分为数据库客户端编程与数据库服务器端编程。数据库客户端...
CRecordSet类用法
要实现对结果集的数据操作,就要用到CRecordSet类。CRecordSet类定义了从数据库接收或者发送数据到数据库的成员变量,CRecordSet类定义的记录集可以是表的所有列,也可以是其中的一列,这是由SQL语句决定的。 CRecordSet类的成员变量m_hstmt代表了定义该记录集的SQL语句句柄,m_nFields成员变量保存了记录集中字段的个数,m_nParams成员变量保存了
CRecordset类
CRecordset类代表一个记录集,是MFC的ODBC类中最重要、功能最强大的类。 #include 1. 动态集、快照、光标和光标库 在多任务操作系统或网络环境中,多个用户可以共享同一个数据源。共享数据的一个主要问题是如何协调各个用户对数据源的修改。例如,当某一个应用改变了数据源中的记录时,别的连接至该数据源的应用应该如何处理。对于这个问题,基于MFC的ODBC应用程序可以采
CRecordset::Open
virtual BOOL Open( UINT nOpenType = AFX_DB_USE_DEFAULT_TYPE, LPCTSTR lpszSQL = NULL, DWORD dwOptions = none ); throw( CDBException, CMemory
获取ResultSet集合查询出的字段名称
/** * 获取ResultSet集合查询出的字段名称 * @return */ public List<String> getColumnName(){ Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; List<String> cols = ...
480


:单独使用CRecordSet&spm=1001.2101.3001.11974&articleId=214191&d=1&t=3&u=ecd8d6ab24fb48ab8b9b962129785bbb)

被折叠的 条评论
为什么被折叠?



