C++ ADO 数据查询
ADO 数据查询
关键点
上1条
下1条 第1条 最后1条
实现过程
|
// stdafx.h : include file for standard system include files,
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename ("EOF", "adoEOF")
// ADODlg.h : header file public:
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset; // ADODlg.cpp : implementation file BOOL CADODlg::OnInitDialog()
m_pConnection.CreateInstance(__uuidof(Connection));
try
{
// 打开本地Access库Demo.mdb
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Db1.mdb","","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败,确认数据库Db1.mdb是否在当前路径下!");
return FALSE;
}
m_pRecordset.CreateInstance(__uuidof(Recordset));
try
{
m_pRecordset->Open("SELECT * FROM student", // 查询DemoTable表中所有字段
m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
void CADODlg::OnFirst() {
_variant_t var;
if(!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
else
{
AfxMessageBox("已经是第一个了");
return;
}
var = m_pRecordset->GetCollect("Name");
if(var.vt != VT_NULL)
m_strName = (LPCSTR)_bstr_t(var);
var = m_pRecordset->GetCollect("Sex");
if(var.vt != VT_NULL)
m_strSex = (LPCSTR)_bstr_t(var);
var = m_pRecordset->GetCollect("Age");
if(var.vt != VT_NULL)
{
m_nAge = atoi(LPCTSTR(_bstr_t(var)));
}
var = m_pRecordset->GetCollect("Grade");
if(var.vt != VT_NULL)
{
m_nGrade = atoi(LPCTSTR(_bstr_t(var)));
}
UpdateData(FALSE);
}
void CADODlg::OnPrev()
{
_variant_t var;
if(m_pRecordset->BOF)
{
AfxMessageBox("已经是最后一个了");
return;
}
m_pRecordset->MovePrevious();
if(m_pRecordset->BOF)
{
AfxMessageBox("已经是第一个了");
return;
}
else
{
var = m_pRecordset->GetCollect("Name");
if(var.vt != VT_NULL)
m_strName = (LPCSTR)_bstr_t(var);
var = m_pRecordset->GetCollect("Sex");
if(var.vt != VT_NULL)
m_strSex = (LPCSTR)_bstr_t(var);
var = m_pRecordset->GetCollect("Age");
if(var.vt != VT_NULL)
{
m_nAge = atoi(LPCTSTR(_bstr_t(var)));
}
var = m_pRecordset->GetCollect("Grade");
if(var.vt != VT_NULL)
{
m_nGrade = atoi(LPCTSTR(_bstr_t(var)));
}
UpdateData(FALSE);
}
}
void CADODlg::OnNext()
{
_variant_t var;
if(m_pRecordset->adoEOF)
{
AfxMessageBox("已经是最后一个了");
return;
}
m_pRecordset->MoveNext();
if(m_pRecordset->adoEOF)
{
AfxMessageBox("已经是最后一个了");
return;
}
else
{
var = m_pRecordset->GetCollect("Name");
if(var.vt != VT_NULL)
m_strName = (LPCSTR)_bstr_t(var);
var = m_pRecordset->GetCollect("Sex");
if(var.vt != VT_NULL)
m_strSex = (LPCSTR)_bstr_t(var);
var = m_pRecordset->GetCollect("Age");
if(var.vt != VT_NULL)
{
m_nAge = atoi(LPCTSTR(_bstr_t(var)));
}
var = m_pRecordset->GetCollect("Grade");
if(var.vt != VT_NULL)
{
m_nGrade = atoi(LPCTSTR(_bstr_t(var)));
}
UpdateData(FALSE);
}
}
//最后1条
void CADODlg::OnLast()
{ _variant_t var;
if(!m_pRecordset->adoEOF)
m_pRecordset->MoveLast();
else
{
AfxMessageBox("已经是最后一个了");
return;
}
var = m_pRecordset->GetCollect("Name");
if(var.vt != VT_NULL)
m_strName = (LPCSTR)_bstr_t(var);
var = m_pRecordset->GetCollect("Sex");
if(var.vt != VT_NULL)
m_strSex = (LPCSTR)_bstr_t(var);
var = m_pRecordset->GetCollect("Age");
if(var.vt != VT_NULL)
{
m_nAge = atoi(LPCTSTR(_bstr_t(var)));
}
var = m_pRecordset->GetCollect("Grade");
if(var.vt != VT_NULL)
{
m_nGrade = atoi(LPCTSTR(_bstr_t(var)));
}
UpdateData(FALSE);
}
|


图
备注
相关链接
附件列表
C++ ADO 数据查询的更多相关文章
- MVC实用架构设计(三)——EF-Code First(4):数据查询
前言 首先对大家表示抱歉,这个系列已经将近一个月没有更新了,相信大家等本篇更新都等得快失望了.实在没办法,由于本人水平有限,写篇博客基本上要大半天的时间,最近实在是抽不出这么长段的空闲时间来写.另外也 ...
- 使用ADO.NET查询和操作数据
使用ADO.NET查询和操作数据 StringBuilder类: 用来定义可变字符串StringBuilder sb = new StringBuilder("");//追加字符串 ...
- 使用ADO.NET查询和访问数据库
使用ADO.NET查询和访问数据库步骤 使用ADO.NET查询和访问数据库 连接数据库操作: 1. 定义连接字符串: String connString = "Data Sour ...
- Django models .all .values .values_list 几种数据查询结果的对比
Django models .all .values .values_list 几种数据查询结果的对比
- 关系数据库SQL之高级数据查询:去重复、组合查询、连接查询、虚拟表
前言 接上一篇关系数据库SQL之基本数据查询:子查询.分组查询.模糊查询,主要是关系型数据库基本数据查询.包括子查询.分组查询.聚合函数查询.模糊查询,本文是介绍一下关系型数据库几种高级数据查询SQL ...
- SharePoint服务器端对象模型 之 使用CAML进展数据查询
SharePoint服务器端对象模型 之 使用CAML进行数据查询 一.概述 在SharePoint的开发应用中,查询是非常常用的一种手段,根据某些筛选.排序条件,获得某个列表或者某一些列表中相应的列 ...
- .NET应用架构设计—面向查询服务的参数化查询设计(分解业务点,单独配置各自的数据查询契约)
阅读目录: 1.背景介绍 2.对业务功能点进行逻辑划分(如:A.B.C分别三个业务点) 2.1.配置映射关系,对业务点配置查询契约(构造VS插件方便生成查询契约) 2.2.将配置好的映射策略文件放在调 ...
- Yii2 数据查询
转载来自: http://www.yiichina.com/tutorial/95 数据查询 User::find()->all(); 此方法返回所有数据: User::findOne($id) ...
- 6、SQL Server 数据查询
一.使用SELECT检索数据 数据查询是SQL语言的中心内容,SELECT 语句的作用是让数据库服务器根据客户要求检索出所需要的信息资料,并按照规定的格式进行整理,返回给客户端. SELECT 语句的 ...
随机推荐
- C++ STL算法系列1---count函数
一.count函数 algorithm头文件定义了一个count的函数,其功能类似于find.这个函数使用一对迭代器和一个值做参数,返回这个值出现次数的统计结果. 编写程序读取一系列int型数据,并将 ...
- 转载: Vim 练级攻略
转自:http://coolshell.cn/articles/5426.html 酷壳 vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类, ...
- 20、内存溢出(Out of Memory)
内存引用(释放强引用) Object obj=new Object(); obj = null; 内存引用(使用软引用) 软引用是主要用于内存敏感的高速缓存.在jvm报告内存不足之前会清 除所 ...
- Bigger is Better
题意: 有n个火柴棒,已知拼成9个数字花费的数目,求能拼出的能整除m的最大数 分析: dp[i][j]表示,用i个火柴棒,拼出的数余m余数为j时的最大数 int tmp=dp[i][j]*10+k;( ...
- C++实现网格水印之调试笔记(五)—— 提取出错
在实现提取水印的过程中,遇到了一些问题 首先还是根据论文中的思路来梳理一下整个提取流程 读入两个模型,一个原始模型ori_mesh, 一个水印模型wm_mesh. 将两个模型对齐(即放在同一个坐标系下 ...
- C++实现网格水印之调试笔记(四)—— 完成嵌入
接下来的问题是,当模型是对称的时候,结果是符合预期的,但是当模型是不对称的时候,结果是错误的,如下: 输入: 顶点:233 输出: 这又是什么鬼...,我的马呢!!! 看来逻辑上还是有错误 注意这时候 ...
- 分布式文件系统-HDFS
HDFS Hadoop的核心就是HDFS与MapReduce.那么HDFS又是基于GFS的设计理念搞出来的. HDFS全称是Hadoop Distributed System.HDFS是为以流的方式存 ...
- Oracle Database 12c 新特性 - Pluggable Database
在Oracle Database 12c中,可组装式数据库 - Pluggable Database为云计算而生.在12c以前,Oracle数据库是通过Schema来进行用户模式隔离的,现在,可组装式 ...
- AS3 条件编译
转:http://www.lite3.cn/blog/?p=404&cpage=1 知道C/C++ 有条件编译,一直想着AS要是也有条件编译就好了,今天搜了半天Google,终于让我找到了 下 ...
- 基于Node.js的实时推送 juggernaut
基于Node.js的实时推送 juggernaut Juggernaut 基于 Node.js 构建.为浏览器和服务器端提供一个实时的连接,可在客户端和服务器端进行数据的实时推送,适合多角色游戏.聊天 ...