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 语句的 ...
随机推荐
- 在delphi中, reintroduce作用
在delphi中, reintroduce作用 当在子类中重载或者重新声明父类的虚方法时,使用 reintroduce 关键字告知编译器,可以消除警告信息.如: TPar ...
- delphi 对话框初始地址InitialDir
我的电脑:SaveDialog1.InitialDir := '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}';// My Computer {20D04FE0-3 ...
- (原创)LAMP教程5-配置VirtualBox虚拟机中centos6.4的网卡
(原创)LAMP教程5-配置VirtualBox虚拟机中centos6.4的网卡 是的,今天我们要讲的是如何配置VirtualBox虚拟机中centos6.4的网卡,毕竟我们是要做网站开发的,没有网络 ...
- bjfu1284 判别正则表达式
做解析器做得多的我,一上来就觉得要写解析器,麻烦,于是想偷懒用java的正则表达式类Pattern直接进行判断,结果wa了,原因是这题要求的正则表达式只是真正正则表达式的一个子集.比如|12是合法正则 ...
- RHCE ext3文件系统故障一例
好久没来了,博客长草了,我来除除草. 给我分了两人,一个统招,一个Java两年开发经验的社招,让我这从工具平台运维往Python开发方向转的工作是举步维艰啊~ 领导看人还是真特么的不准,希望今年招聘的 ...
- 在这个年纪,打DOTA冲分有那么可笑么?
大学四年,毕业两年,6年dota,总是在最无助的时候让心灵得到一丝安宁的东西,烟和dota. 我不知道dota对别人的意义是什么,一盘dota,在最多不超过1个半小时的时间里,仿佛经历了一个小人生,每 ...
- MEAN Stack:创建RESTful web service
本文在个人博客上的地址为URL,欢迎品尝. 前段时间做了DTREE项目中的前后端数据存储功能,在原有的ngController上进行HTTP请求,后端接受到请求后再存储到mongoDB上.现将学习所得 ...
- scanf,sscanf利用format跳过干扰的空格
scanf,sscanf利用format跳过干扰的空格 用了一点时间做读取配置部分的代码,希望一次记录上读取N个数据, 希望读取的格式就是一个IP地址加上端口号,希望把IP地址读取到4个短整数里面,端 ...
- HDU 3072 Intelligence System (强连通分量)
Intelligence System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- JSF 2.0 + Ajax hello world example
In JSF 2.0, coding Ajax is just like coding a normal HTML tag, it's extremely easy. In this tutorial ...