我想用CDatabase::ExcuteSQL执行一条Select子句,然后用查出的记录组来作为CRecordset的操作对象,能不能实现呢?
    ExcuteSQL是不返回值的,那它还有什么意义?

解决方案 »

  1.   

    不能,ExcuteSQL只能执行一些不需要返回的sql 语句,包括存储过程等等,只要在sql查询器中能执行的语句、命令ExcuteSQL基本都能执行。而recordset只能有限的sql 语句如select或存储过程。
      

  2.   

    将一些复杂的数据库操作写成存储过程,用ExcuteSQL执行它可以节约很多时间的。使用ExcuteSQL时还可以使用CDatabase中的事务处理,比用recordset中的ADDNEW()或EDIT()等好多了
      

  3.   

    To:  我想用CDatabase::ExcuteSQL执行一条Select子句,然后用查出的记录组来作为CRecordset的操作对象,能不能实现呢?是不是可以不用CDatabase::ExcuteSQL;
    这样做也可以啊
    CDatabase db;db.Open(...);
    CRecordset* m_pSet=new CRecordset(&db);
    CString cmdstr;cmdstr=_T("select * from table");
    if(m_pSet->IsOpen()) m_pSet->Close();
    m_pSet->Open(CRecordset::dynaset,cmdstr);
    此时m_pSet所指的记录对象即为所求