问题一:在一个需要被反复频繁调用函数中有如下程序,
_RecordsetPtr    pRecordset;
...
pRecordset.CreateInstance(__uuidof(Recordset));
这样创建对象的效率有多高?会不会对程序的速度有影响?
问题二:
定义类成员变量:
_RecordsetPtr    m_pRecordset;
构造函数中:
try
{
    m_pRecordset.CreateInstance(__uuidof(Recordset));
}
catch(_com_error &e)
{
    AfxMessageBox(e.Description());
}
析构函数中:
try
{
    m_pRecordset->Close();
}
catch(_com_error &e)
{
    AfxMessageBox(e.Description());
}
在类中满足某个条件时会调用一个函数,其中有:
m_pRecordset = g_pConnect->Execute(...);
但是如果条件不满足时就不会执行,也就是说程序相当于CreateInstance之后直接Close,
这时会提示:对象关闭时,操作不被允许。这是怎么回事?
问题三:
pRecordset对象是否可以CreateInstance一次之后连续使用?
比如:
pRecordset = g_pConnect->Execute(SQL语句1,...);
pRecordset = g_pConnect->Execute(SQL语句2,...);
pRecordset = g_pConnect->Execute(SQL语句3,...);

解决方案 »

  1.   

    2.对象关闭时,操作不被允许。这是怎么回事?
       if(m_pRecordset->State)
    m_pRecordset->Close();
    3.没问题的
      

  2.   

    问题一,有影响,可以把_RecordsetPtr定义为全局的,只创建一个反复使用。问题二,不可以对已经关闭的pRecordset 再次调用Close问题三,pRecordset本来就是一次CreateInstance后反复Close Open来使用的。if(m_pRecordset->State)
    m_pRecordset->Close();
    应该写成if(m_pRecordset->State==宏)
    有个宏定义为 已经关闭 ,你查MSDN
      

  3.   

    1,创建com 对象,需要占用资源的
    2,关闭后,不能再调用
    3,可以反复使用的