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 数据查询的更多相关文章

  1. MVC实用架构设计(三)——EF-Code First(4):数据查询

    前言 首先对大家表示抱歉,这个系列已经将近一个月没有更新了,相信大家等本篇更新都等得快失望了.实在没办法,由于本人水平有限,写篇博客基本上要大半天的时间,最近实在是抽不出这么长段的空闲时间来写.另外也 ...

  2. 使用ADO.NET查询和操作数据

    使用ADO.NET查询和操作数据 StringBuilder类: 用来定义可变字符串StringBuilder sb = new StringBuilder("");//追加字符串 ...

  3. 使用ADO.NET查询和访问数据库

    使用ADO.NET查询和访问数据库步骤 使用ADO.NET查询和访问数据库 连接数据库操作: 1.       定义连接字符串: String connString = "Data Sour ...

  4. Django models .all .values .values_list 几种数据查询结果的对比

    Django models .all .values .values_list 几种数据查询结果的对比

  5. 关系数据库SQL之高级数据查询:去重复、组合查询、连接查询、虚拟表

    前言 接上一篇关系数据库SQL之基本数据查询:子查询.分组查询.模糊查询,主要是关系型数据库基本数据查询.包括子查询.分组查询.聚合函数查询.模糊查询,本文是介绍一下关系型数据库几种高级数据查询SQL ...

  6. SharePoint服务器端对象模型 之 使用CAML进展数据查询

    SharePoint服务器端对象模型 之 使用CAML进行数据查询 一.概述 在SharePoint的开发应用中,查询是非常常用的一种手段,根据某些筛选.排序条件,获得某个列表或者某一些列表中相应的列 ...

  7. .NET应用架构设计—面向查询服务的参数化查询设计(分解业务点,单独配置各自的数据查询契约)

    阅读目录: 1.背景介绍 2.对业务功能点进行逻辑划分(如:A.B.C分别三个业务点) 2.1.配置映射关系,对业务点配置查询契约(构造VS插件方便生成查询契约) 2.2.将配置好的映射策略文件放在调 ...

  8. Yii2 数据查询

    转载来自: http://www.yiichina.com/tutorial/95 数据查询 User::find()->all(); 此方法返回所有数据: User::findOne($id) ...

  9. 6、SQL Server 数据查询

    一.使用SELECT检索数据 数据查询是SQL语言的中心内容,SELECT 语句的作用是让数据库服务器根据客户要求检索出所需要的信息资料,并按照规定的格式进行整理,返回给客户端. SELECT 语句的 ...

随机推荐

  1. K2 学习笔记

    转:http://www.cnblogs.com/kaixuanpisces/category/149223.html k2 简介 工作流介绍 k2流程设计简介 K2流程设计详细版(图文)一 K2流程 ...

  2. 编译boost (windows msvc14)

    我的环境 OS: WIN10 (x64) IDE: VS2015 (VC14) http://www.boost.org/ 1. 下载 下载boost包, boost_1_62_0.7z 使用ASIO ...

  3. logback.xml配置

    一:根节点<configuration>包含的属性: scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true. scanPeriod: 设置监测配置文 ...

  4. XA事务处理

    XA接口详解 X/Open XA接口是双向的系统接口,在事务管理器(Transaction Manager)以及一个或多个资源管理器(Resource Manager)之间形成通信桥梁.事务管理器控制 ...

  5. iframe 透明

    iframe是迫不得已才使用的,因为使用iframe会带来较多的问题,而有的浏览器可以设置将iframe当作广告屏蔽. 在最近的一个工作内容中使用了iframe,开始遇到的问题是iframe高度自适应 ...

  6. hdu 4720 计算几何简单题

    昨天用vim练了一道大水题,今天特地找了道稍难一点的题.不过也不是很难,简单的计算几何而已.练习用vim编码,用gdb调试,结果居然1A了,没调试...囧... 做法很简单,无非就是两种情况:①三个巫 ...

  7. net中前台javascript与后台c#函数相互调用

    问: 1.如何在JavaScript访问C#函数? 2.如何在JavaScript访问C#变量? 3.如何在C#中访问JavaScript的已有变量? 4.如何在C#中访问JavaScript函数? ...

  8. maltab几个常见的问题

    maltab常见的几个习题 1. MATLAB 的命令窗口的作用是什么?编辑/调试窗口?图象窗口? MATLAB命令窗口是MATLAB起动时第一个看到的窗口,用户可以在命令窗口提示符"> ...

  9. C++ 我想这样用(四)

    嗯,已经是第四篇了,这篇起我就要开始细说语法了,不过在那之前再次申明下主旨:"C++我想这样用" 系列文案是为C程序员打造的,不是C++程序员. 我的终极目标是:让那些觊觎面向对象 ...

  10. USACO 2013 November Contest Gold 简要题解

    Problem 1. Empty Stalls 扫两遍即可. Problem 2. Line of Sight 我们发现能互相看见的一对点一定能同时看见粮仓的某一段.于是转换成有n段线段,问有多少对线 ...