大家帮忙一下ADO连接上了数据库,但是我操作的时候就会错误,不知道为什么,比如我声明了_RecordsetPt m_pRecordset;来操作m_pRecordset->adoEOF就会出错,不知道为什么,只要用到m_pRecordset这个指针就会弹出:Runtime Error!
    Program:...
    This application has requested the Runtime to terminate it in an unusual way.
    Please contact the application's support team for more information.如果我把关于m_pRecordset的东西注释掉就可以了,不知道为什么,请你们帮忙以下,我弄了几天,源码也看了很多但是还是不懂,人家源码可以但是我做的时候就会出错!先感谢大家!

解决方案 »

  1.   

    m_pRecordset这个你没初始化就拿来用.....
      

  2.   

    我刚写了一个博客
    看看会不会对你有帮助
    http://blog.csdn.net/xianglitian/archive/2010/05/22/5617173.aspx
      

  3.   

    加上这一句 m_pRecordset.CreateInstance(__uuidof(Recordset));用来初始化m_pRecordset
      

  4.   

    看看这个帖子
    http://http://topic.csdn.net/u/20100429/11/a1a68cd2-d942-4f6b-b387-69a130ec5888.html
      

  5.   

    你试试m_pRecordset->EOF这个有错吗?
      

  6.   

    数据源改成绝对路径试试。我正好在学,这是我的:
    class CADODB
    {
    public:
    CADODB();
        virtual ~CADODB();
    public:
    _RecordsetPtr m_pRecordset;
    void OnInitADODB(_bstr_t strConnect,_bstr_t userID,_bstr_t password);
    void Select(_bstr_t sqlstr);
    void Execute(_bstr_t sqlstr);
    void AddNew(_bstr_t sqlstr,char* str[],int index);
    protected:
    _ConnectionPtr m_pConnection; 
    };#include "stdafx.h"
    #include "ADODB.h"CADODB::CADODB()
    {
    ::CoInitialize(NULL);
    }CADODB::~CADODB()
    {
    if (m_pRecordset != NULL)
    m_pRecordset->Close();
    m_pConnection->Close();
    ::CoUninitialize();
    }void CADODB::OnInitADODB(_bstr_t strConnect,_bstr_t userID,_bstr_t password)
    {
    try
    {
    m_pConnection.CreateInstance(__uuidof(Connection));
    m_pConnection->Open(strConnect,userID,password,adModeUnknown);
    }catch(_com_error e)
    {
    cout<<e.Description()<<endl;
    }
    }void CADODB::Select(_bstr_t sqlstr)
    {
    try
    {
    m_pRecordset.CreateInstance(__uuidof(Recordset));
    m_pRecordset->Open(sqlstr,
    m_pConnection.GetInterfacePtr(),   
    adOpenDynamic,   
    adLockOptimistic,   
    adCmdText);
    int nResultCol = m_pRecordset->Fields->GetCount();//获得纪录集总列数
    int nResultRow=0;
    VARIANTARG var;
    m_pRecordset->MoveFirst(); 
    while(!m_pRecordset->adoEOF)
    {
    for(int i=0;i<nResultCol;i++)
    {
    var=m_pRecordset->GetCollect(_variant_t(long(i))); 
    if(var.vt!=VT_NULL)  
    cout<<_bstr_t(var)<<" ";
    }
    cout<<endl;
    m_pRecordset->MoveNext(); 
    nResultRow++;
    }
    m_pRecordset->Close();
    m_pRecordset=NULL;
    cout<<"nResultCol="<<nResultCol<<endl;
    cout<<"nResultRow="<<nResultRow<<endl;
    }
    catch(_com_error e)///捕捉异常
    {
    cout<<e.Description()<<endl;
    }
    }void CADODB::Execute(_bstr_t sqlstr)
    {
    try
    {
    m_pRecordset=m_pConnection->Execute(sqlstr,NULL,adCmdText);
    }catch(_com_error e)
    {
    cout<<e.Description()<<endl;
    }
    }void CADODB::AddNew(_bstr_t sqlstr,char* str[],int index)
    {
    try
    {
    m_pRecordset.CreateInstance(__uuidof(Recordset));
    m_pRecordset->Open(sqlstr,
    m_pConnection.GetInterfacePtr(),   
    adOpenDynamic,   
    adLockOptimistic,   
    adCmdText); 
    m_pRecordset->AddNew();
    for(int i=0;i<index;i+=2)
    m_pRecordset->PutCollect(str[i],str[i+1]);
    m_pRecordset->Update();
    }catch(_com_error e)
    {
    cout<<e.Description()<<endl;
    }
    } CADODB ado;
    ado.OnInitADODB("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\Project2\\test1\\db1.mdb","",""); 
    //ado.Select("SELECT * FROM userinfo"); 
    //ado.Execute("SELECT * FROM userinfo Where id=251");
    //VARIANTARG var=ado.m_pRecordset->GetCollect("name"); 
    //if(var.vt!=VT_NULL)  
    // cout<<(char*)_bstr_t(var)<<endl;
    //char* str[4]={"name","dddd","pass","678"};
    //ado.AddNew("SELECT * FROM userinfo",str,4); 
    //ado.Execute("DELETE FROM userinfo Where id=4"); 
    ado.Execute("UPDATE userinfo set pass=1111 where id=5"); 
    ado.Select("SELECT * FROM userinfo");
      

  7.   

    不会是这个 no_namespace rename("EOF", "adoEOF") 没写吧
      

  8.   


    我用这个也有错的!就是m_pRecordeset跟指针有关的都会错!
      

  9.   

    出错,是不是m_pRecordRSet没有初始化?
    再看看有没有初始化COM库.
      

  10.   

    _RecordsetPt m_pRecordset?????
    _RecordsetPtr m_pRecordset