用Execute的确是能执行,删除,插入这些都没问题,但是查找怎么办???需要返回数据呀,鬼知道他把数据放哪去了

解决方案 »

  1.   

    _RecordsetPtr rs;
    rs->Open()
      

  2.   

    楼上的具体点好吗?我不大懂,OPEN有哪些参数,分别是干什么用的!谢谢!
      

  3.   

    LZ是否是想获取查询返回的数据集的各个字段值?我是这么做的:================================================== 华丽的分割线 =============================================首先为数据表User单独建一个类(如下)#pragma once#include "icrsint.h"  //注意一定要引用这个!!#include "StdAfx.h"class CUsers :
    public CADORecordBinding
    {
    private:
    //绑定入口宏
    BEGIN_ADO_BINDING(CUsers)
    ADO_VARIABLE_LENGTH_ENTRY2( 1, ::adChar, m_user_name, sizeof(m_user_name), dw_user_nameStatus, TRUE)
    ADO_VARIABLE_LENGTH_ENTRY2( 2, ::adChar, m_user_pwd, sizeof(m_user_pwd), dw_user_pwdStatus, TRUE)
    ADO_VARIABLE_LENGTH_ENTRY2( 3, ::adInteger, m_state, 2, dw_stateStatus, TRUE)
    END_ADO_BINDING()public:
    CHAR m_user_name[40];
    DWORD dw_user_nameStatus; CHAR m_user_pwd[10];
    DWORD dw_user_pwdStatus;         int m_state;
    DWORD dw_stateStatus;public:
    CUsers(void);
    ~CUsers(void);
    };
    ================================================== 华丽的分割线 =============================================当然,少不了要声明CUsers类的实例CUsers *m_pUsers;
    m_pUsers = new CUsers
    ================================================== 华丽的分割线 =============================================然后,在RecordSet对象调用open函数:        char sql [1024];
            sprintf(sql,"select * from user"); //根据SQL语句打开相应的数据集合
    HRESULT hr = this->m_pRecordset->Open(
    sql, 
    this->m_pConnection.GetInterfacePtr(), 
    adOpenStatic, 
    adLockOptimistic, 
    adCmdText);
    if (!SUCCEEDED(hr))
    {
    sprintf(msg,"Recordset Open Fail !");
    printf("%s\n",msg);
    return false;
    }
    ================================================== 华丽的分割线 =============================================接着,将数据集和user表绑定 hr = this->m_pRecordset->QueryInterface( __uuidof(IADORecordBinding), (LPVOID *)&this->m_pADORecordBinding);
    if (!SUCCEEDED(hr))
    {
    sprintf(msg, "Users Recordset QueryInterface Fail !");
    printf("%s\n",msg);
    return false;
    } hr = this->m_pADORecordBinding->BindToRecordset(this->m_pUsers); 
    if (!SUCCEEDED(hr))
    {
    sprintf(msg,"Users BindToRecordset Fail !");
    printf("%s\n",msg);
    return false;
    }
    ================================================== 华丽的分割线 =============================================最后,遍历数据集,取出各条记录: //遍历数据表
    while (!scan->m_pRecordset->adEOF)
    {
                    strncpy(username,m_pUsers->m_user_name,sizeof(m_pUsers->m_user_name);
    strncpy(password,m_pUsers->m_user_pwd, sizeof(m_pUsers->m_user_pwd);
    state = m_pUsers->m_state; //取下一条记录
    scan->m_pRecordset->MoveNext();
    }