gpt4 book ai didi

c++ - 正确复用 ADODB 命令对象执行多个查询

转载 作者:行者123 更新时间:2023-11-30 02:49:04 25 4
gpt4 key购买 nike

我必须执行多个 INSERT 查询,我希望重用一个 Command 对象,而不是为我的每个查询创建一个新对象。

为了更好地说明这一点,这里有一个伪代码:

ADODB::_CommandPtr pCmd("ADODB.Command");

pCmd->ActiveConnection = pConn;

pCmd->CommandText = L"INSERT INTO MyTable ( field1, field2 ) VALUES (?,?);";

pCmd->Parameters->Append( pCmd->CreateParameter( "?", ADODB::adVarWChar,
ADODB::adParamInput, wcslen( myString ), myString ) );

pCmd->Parameters->Append( pCmd->CreateParameter( "?", ADODB::adDouble,
ADODB::adParamInput, sizeof(double),
_wtof_l( myDouble, _get_current_locale() ) ) );

pCmd->Execute( NULL, NULL, ADODB::adCmdText );

// empty parameters collection->the problematic part

/**** execute second query **************/

pCmd->CommandText = //some other query

// and do basically the same as above:
// append some parameters and execute query

我不知道如何从 Parameters 集合中删除所有参数,以便我可以将 Command 对象重新用于另一个 SQL 查询。

由于没有经验,我尝试在互联网上寻找解决方案,并找到了一些关于如何做的建议。这是我的尝试:

do
{
pCmd->Parameters->Delete(0);
}
while( pCmd->Parameters->GetCount() > 0 );

但失败了。我也试过这个:

for( long i = 0; i < pCmd->Parameters->GetCount(); i++ )
pCmd->Parameters->Delete(i);

但这也失败了。

如何正确清空 Parameters 集合,以便重用 Command 对象?

谢谢。

最好的问候。

最佳答案

通过更好地查看来自 Internet 的示例,我设法弄清楚了这一点。重点是像这样从结尾到开头删除参数:

for( long i = pCmd->Parameters->GetCount()-1; i >= 0; i-- ) 
pCmd->Parameters->Delete(i);

或者像这样:

do
{
pCmd->Parameters->Delete( pCmd->Parameters->GetCount()-1 );
}
while( pCmd->Parameters->GetCount()-1 >= 0 );

我仍然会遵循成员 WhozCraig 的建议,为每个查询创建新的 Command 对象。

再次感谢 WhozCraig 并向您致以最诚挚的问候!

关于c++ - 正确复用 ADODB 命令对象执行多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21544129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com