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. java移动/赋值文件 copy/move file

    public class FileAccess { public static boolean Move(File srcFile, String destPath) { // Destination ...

  2. Delphi 操作word 表格

    var wordApp, WordDoc, WrdSelection, wrdtable: variant; strAdd: string; wdPar,wdRange:OleVariant; iCo ...

  3. python 资料

    主站: 主页:http://python.org/下载:http://python.org/download/文档:http://python.org/doc/ books: ActivePython ...

  4. Slalom

    题意: 有n个宽度为w的门,给出门的左端点的水平位置x和高度y,和恒定的垂直速度,现有s个速度,求能通过这n个门的最大速度. 分析: 二分速度判断 #include <map> #incl ...

  5. C ~ 一个串口接收思路

    void uart_rx_isr(void) //接收中断函数 { uchar c; c=SBUF;//c等于接收的字节: switch (recv_state) { : if (c==0x02) / ...

  6. 测试xss和xsf

    xss注入攻击: 123123123 被动注入: 1231231231231231 主动注入: 对不起,你需要登录才能评论 用户名 密码

  7. Linux 中 x86 的内联汇编

    工程中需要用到内联汇编,找到一篇不错的文章,趁机学习下. 原文地址:http://www.ibm.com/developerworks/cn/linux/sdk/assemble/inline/ 如果 ...

  8. ArcMap10.1无法保存编辑的内容

    问题描述:在arcMap10.1中编辑SDE库中要素,保存编辑内容时报错: 无法保存编辑内容.基础DBMS错误[ORA-29877:failed in the execution of the ODC ...

  9. <Chapter 2>2-1-1.安装Python SDK

    App Engine包含两个Python运行时环境:一个基于Python2.5的传统环境,以及一个运行Python2.7的新环境.这个新环境不仅仅是有一个轻微的新版本的Python解释器.主要是,这个 ...

  10. (转)在iOS中使用icon font

    http://ued.taobao.org/blog/?p=8579 在开发阿里数据iOS版客户端的时候,由于项目进度很紧,项目里的所有图标都是用最平常的背景图片方案来实现.而为了要兼容普通屏与Ret ...