我要实现_CommandPtr对象重用, 一次创建多次使用。我如何清除第一次使用的参数。在调用存储过程时候,第一次执行Parameter.Count的数量是正确的。但第二次的时候参数就是成倍增加。 我试图
for(int i= 0; i<m_pCmd->Parameters->Count; i++)
{
m_pCmd->Parameters->Item[i]->Delete();
}
来清除,但是每次清除都出现清除参数异常无效句柄 。

解决方案 »

  1.   

    m_pCmd->Parameters->Release();   就行了。
      

  2.   

    是不是顺序问题呢?能给我个简单demo吗?多谢了啊。我卡在这里2天了。试验过各种方法了。
      

  3.   

    先把_recordsetptr变量给close了,然后再把_connectionptr变量close了,然后再_connectionptr变量 = NULL就行了,一定要先把_recordsetptr给关了,不然直接关_connectionptr会报错
      

  4.   

    我的目的是为了节约数据库链接过程中的开销,所以我一开始的时候就用 _connectionptr创建了一个连接池的,如果我close就失去了提高效率的意义了。另外我才用的是_CommandPtr的com指针阿。没有用_RecordsetPtr的。
      

  5.   

    问题解决了.
    BOOL QSystem::Data::QAdoDB::ParamRefresh( void )
    {
    for(int  i = m_pCmd->Parameters->Count-1; i>=0; i--) 
    m_pCmd->Parameters->Delete((long)i);
    m_pCmd->Parameters->Release();
    return TRUE;
    //return S_OK == m_pCmd->Parameters->Refresh();
    }
    用这个就可以,但是必须在Parameter释放之前,我顺序农错了.