毕设公交查询系统 
用的VC6和SQL SERVER2000 
在连接数据库时遇到问题 VC中用向导声称CRECORDSET派生类 
向导设置选择表时只选了一个(GROUTET0) 因为书上写的可随便选 以后查询时不受限制 
现在用OPEN进行查询时只能查询那一张表,查询其他表时都会弹出 
invalid descriptor index 
open语句是这么写的 
m_rs.Open(CRecordset::snapshot,_T( "Select * from Route" )); 
如果将ROUTE改成GROUTET0,或者直接open()就能够正常查询 
另外,查询语句也不能更改,只能SELECT * FROM GROUTET0,改了后也会弹出INVALID DESCRIPTOR INDEX请教这是怎么回事,急!!!
为什么只能用默认的查询,怎样才能使用自己的查询语句小弟是初学者,请大家帮忙了 

解决方案 »

  1.   


    您好 我是用ODBC MFC方法进行数据库编程但用向导生成CRECORDSET派生类后只能用OPEN进行默认的查询不能更改表 也不能更换SQL查询语句
      

  2.   

    我所进行的查询只是使用几个已经编好的存储过程
    但现在所生成的CRECORDSET派生类只能进行默认的SELECT *查询请大家帮帮我 我是个初学者 不知道要怎么办了
      

  3.   

    反正我是一开始就选择了 ADO,不过,MFC肯定实现了相关的功能,仔细查查资料应该不难,
      

  4.   

    ODBC里面有没有类似于CRECORDSET,而叫做Command这样的类?
    我在 ADO里面用 _CommandPtr来执行存储过程,当然先用_ConnectionPtr连下
    用 _RecordsetPtr执行Select语句获得数据,也当然,先用_ConnectionPtr连下
    ODBC里面是不是有类似的?
      

  5.   

    建议在程序中直接写SQL语句来操作数据库,我一直是这么做的。还有用ODBC太麻烦了,直接用ADO连上数据库以后增、删、改以及查询操作都用SQL语句会很方便。
      

  6.   

    我在写数据库方面的程序时都爱APP类里加一个这样的函数,使用起来直接调用会更方便。如下:_RecordsetPtr CConsumptionApp::ExecuteSQL(CString &sql)
    {
    _RecordsetPtr pset=NULL;
    _CommandPtr pcmd;
    HRESULT hr=S_OK;
    try
    {
    //创建命令对象
    hr=pcmd.CreateInstance(__uuidof(Command));
    if(FAILED(hr))
    {
    AfxMessageBox(_T("CConsumptionApp::ExecuteSQL()中创建\r\nCommand实例失败。"));
    return pset;
    }
    pcmd->ActiveConnection=m_pConnect;
    pcmd->CommandText=_bstr_t(sql);
    pset=pcmd->Execute(NULL,NULL,0);
    }
    catch(_com_error& e)
    {
    CString error;
    error.Format("CConsumptionApp::ExecuteSQL()\r\n\
    中发生异常。\r\n%s\r\n%s",e.ErrorMessage(),(char*)e.Description());
    AfxMessageBox(_T(error));
    }
    return pset;
    }