_ConnectionPtr mcConnection;
_RecordsetPtr mcRecordset;
bool mbConnected;
HRESULT hr;_bstr_t source("Driver={SQL Server};Server=CHOCOBO;Uid=PIV;Pwd=PIV;Database=PIZZA.NET");_bstr_t user("sa");
_bstr_t pwd("");
try
{
hr = mcConnection.CreateInstance(_uuidof(Connection));
hr = mcConnection->Open(source, user, pwd, 16);
hr = mcRecordset.CreateInstance(_uuidof(Recordset));
mbConnected = true;
hr = mcConnection->Close();
}
以上程序在执行时总在最后Close时出错,出错信息用ERROR捕捉为:“对象关闭时,不允许操作”,不知是什么原因。

解决方案 »

  1.   

    可能是mcConnection->Open(source, user, pwd, 16);没有执行成功。
    判断一下hr是否执行成功了
      

  2.   

    试试先关闭
    mcRecordset
    再CLOSE 它
      

  3.   

    如果在中间加语句的话,我可以对数据库进行操作;mcRecordset我没有用open,怎么close?
      

  4.   

    那如果这样呢,// hr = mcRecordset.CreateInstance(_uuidof(Recordset));close还会错吗?
      

  5.   

    hr = mcConnection->Open(source, user, pwd, 16);
    主要是这句有关hr = mcRecordset.CreateInstance(_uuidof(Recordset));
    与这句无关
    因为是mcConnection->Close();
      

  6.   

    那就判断一下 if(!SUCCEEDED(hr))
    {
    return FALSE;;
    }