==================================声明==================================

本文原创,转载在正文中显要的注明作者和出处,并保证文章的完整性。

未经作者同意请勿修改(包括本声明),保留法律追究的权利。

未经作者同意请勿用于出版、印刷或学术引用。

本文不定期修正完善,为保证内容正确,建议移步原文处阅读。

本文链接:http://www.cnblogs.com/wlsandwho/p/4367798.html

=======================================================================

同一个_CommandPtr执行不同参数的存储过程

按照手册(见本系列参考资料)上说的:

Delete 方法(ADO Parameters 集合)
      

从 Parameters 集合中删除对象。

语法

Parameters.Delete Index

参数

Index   String 值,包含要删除的对象的名称,或者对象在集合中的序号位置(索引)。

说明

使用集合的 Delete 方法可删除此集合中的一个对象。此方法只能用在 Command 对象的 Parameters 集合上。在调用 Delete 方法时必须使用 Parameter 对象的 Name 属性或其集合索引——对象变量是无效参数。

我尝试了下

 1 gpParam1=gpCmd->CreateParameter(TEXT("ID"),adInteger,adParamInput,sizeof(int));
 2 gpParam1->Value=_variant_t(6);
 3 gpCmd->Parameters->Append(gpParam1);
 4 
 5 gpCmd->Execute(NULL,NULL,adCmdStoredProc);//执行只有1个参数的存储过程
 6 
 7 ...
 8 
 9 gpCmd->Parameters->Delete(_variant_t(TEXT("ID")));
10 gpCmd->CommandText=TEXT("proc_heheda");//不带参数的存储过程
11 
12 gpCmd->Execute(NULL,NULL,adCmdStoredProc);

成功。

 

=======================================================================

但是,我总感觉还是用同一个_ConnectionPtr配合不同的_CommandPtr用起来方便点呢?

毕竟每次删除参数都很麻烦。