首页 新闻 会员 周边

VC++调用ADO资源释放的问题

0
[已解决问题] 解决于 2010-09-17 10:47

(注意:已经略去无关代码)

初始化:

CoInitialize(NULL);
 _ConnectionPtr pConn(__uuidof(Connection));
 //_RecordsetPtr pRst(__uuidof(Recordset));
 pConn->ConnectionString="Provider=SQLOLEDB.1;Password=xxx;Persist Security Info=True; User ID=sa;Initial Catalog=ArticleCollection";
 pConn->Open("","","",adConnectUnspecified);

调用

 _variant_t RecordsAffected;

pConn->Execute(sqlInsert,&RecordsAffected,-1);
  释放:

pConn->Close();
 pConn->Release();
 CoUninitialize();

异常出现在文件 comip.h中红色位置的函数体内

private:
    // The Interface.
    //
    Interface* m_pInterface;

    // Releases only if the interface is not null.
    // The interface is not set to NULL.
    //
    void _Release() throw()
    {
        if (m_pInterface != NULL) {
            m_pInterface->Release();
        }
    }

 

finallyly的主页 finallyly | 初学一级 | 园豆:100
提问于:2010-09-16 18:45
< >
分享
最佳答案
0

好老的代码呀,勾起我对C++的回忆。

MM,我实在不想去试这样的代码了,但你可以尝试一下使用

 pConn.Release();而不是 pConn->Release();

另外你也可以不调用 pConn->Release();

希望能解决你的问题。

大料 | 菜鸟二级 |园豆:225 | 2010-09-16 22:09
谢谢你,确实是应该写成pConn.Release(). 我抄错了。这是孙鑫<VC++深入详解>中的代码,大概2002年左右出的这本书吧。
finallyly | 园豆:100 (初学一级) | 2010-09-17 10:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册