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 语句的 ...
随机推荐
- 24、AR技术
什么是AR 在介绍增强现实(AR)之前,需要先说说虚拟现实(VR) 虚拟现实是从英文Virtual Reality 一词翻译过来的,简称VR.VR 技术是采用以计算机技术为核心的技术,生成逼真的视.听 ...
- Java相关书籍推荐
Java从入门到精通(第3版 附光盘) 作 者 明日科技 编 出 版 社 清华大学出版社 出版时间 2012-08-01 版 次 3 页 数 564 印刷时间 2012- ...
- Cloudera Impala Guide
Impala Concepts and Architecture The following sections provide background information to help you b ...
- J2SE7规范_2013.2_类
8.1 类的定义 包括普通类和枚举类,枚举(略) 下面都是指普通类: public只能用于外部类,成员类,不能用于局部类,匿名类 protected和private用于成员类时(待解) sta ...
- Google Appengine参考路径
1.Hello, World! in 5 minutes 2.Creating a Guestbook -Introduction 3.Sample Applications 1.Programmin ...
- linux网络编程笔记——TCP
1.TCP和UDP TCP是长连接像持续的打电话,UDP是短消息更像是发短信.TCP需要消耗相对较多的资源,但是传输质量有保障,UDP本身是不会考虑传输质量的问题. 2.网络传输内容 我习惯的做法是直 ...
- Python xlsx 读取
代码示例 #!/usr/bin/env python import xlrd, sys, re, os workbook = xlrd.open_workbook( sys.argv[1] )for ...
- ResolverService跨子网的广播问题
ResolverService在广播请求时,需要借助McastTransport,而McastTransport利用java.net.MulticastSocket进行收发,java.net.Mult ...
- 应用Java泛型和反射导出CSV文件
项目中有需求要把数据导出为CSV文件,因为不同的类有不同的属性,为了代码简单,应用Java的泛型和反射,写了一个函数,完成导出功能. public <T> void saveFile(Li ...
- Educational Codeforces Round 15 (A - E)
比赛链接:http://codeforces.com/contest/702 A. Maximum Increase A题求连续最长上升自序列. [暴力题] for一遍,前后比较就行了. #inclu ...