void CDBAdo::ClearAllParameters() //清除所有参数
{
try
{
long lParamCount = m_ptrCommand->Parameters->Count;
if(lParamCount>0L)
{
/*
for(int i=0;i<lParamCount; i++)
{
m_ptrCommand->GetParameters()->Delete((i));
}
*/
for(long i=lParamCount; i>0; i--)
{
_variant_t vtIndex;
vtIndex.intVal =i;
m_ptrCommand->Parameters->Delete(vtIndex);
}
}
}
catch(_com_error& comError)
{
RecordErrorMsg(comError);
dump_com_error(comError);
}
}
Parameters
Index
A String value that contains the name of the object you want to delete, or the object's ordinal position (index) in the collection.
CSDN给的说明是,需要传入名字字符串或者位置序数
名字字符串应该是CreateParameter 中的第一个参数,这样用起来通用性很差
我传位置进去,不知道为什么总是报错,说 项目中没有应该的对象什么的?
Parameters->Count; 应该是正确的,我得到了正确的参数6,但是就是delete 在消除参数的时候出错,求大家指导一下
------解决方案--------------------
参考: Problem with ADO _Command. CreateParameter in With ++
void CDBAdo::ClearAllParameters() //清除所有参数
{
try
{
long lParamCount = m_ptrCommand->GetParameters()->GetCount();
if(lParamCount>0L)
{
for (int i = lParamCount - 1; i >= 0; i--)
m_ptrCommand->GetParameters()->Delete((long)i);
}
}
catch(_com_error& comError)
{
RecordErrorMsg(comError);
dump_com_error(comError);
}
}