I am using IBDAC in C++ Builder 6. When tried Batch operation, I found and example in the help file, but it was in Delphi format, so I changed it into like this :
Code: Select all
IBCQuery1->Close();
IBCQuery1->SQL->Clear();
IBCQuery1->SQL->Text = "update or insert into sync2(id,sql) values(:id,:sql)";
IBCQuery1->Params->Items[0]->DataType = ftInteger;
IBCQuery1->Params->Items[1]->DataType = ftString;
IBCQuery1->Params->ValueCount = 2000;
i=0;
while(!QNJSSync->Eof)
{
Id = QNJSSync->FieldByName("Id")->AsInteger;
SQL = QNJSSync->FieldByName("SQL")->AsString;
IBCQuery1->Params->Items[0]->AsInteger = Id;
IBCQuery1->Params->Items[1]->AsString = SQL;
i++;
QNJSSync->Next();
}
if(!Connection->InTransaction) Trs->StartTransaction();
IBCQuery1->Execute(1000,0);
Trs->Commit();
Code: Select all
IBCQuery1->Close();
IBCQuery1->SQL->Clear();
IBCQuery1->SQL->Text = "update or insert into sync2(id,sql) values(:id,:sql)";
IBCQuery1->ParamByName("id")->DataType = ftInteger;
IBCQuery1->ParamByName("sql")->DataType = ftString;
IBCQuery1->Params->ValueCount = 2000;
i=0;
while(!QNJSSync->Eof)
{
Id = QNJSSync->FieldByName("Id")->AsInteger;
SQL = QNJSSync->FieldByName("SQL")->AsString;
IBCQuery1->ParamByName("id")->AsInteger = Id;
IBCQuery1->ParamByName("SQL")->AsString = SQL;
i++;
QNJSSync->Next();
}
if(!Connection->InTransaction) Trs->StartTransaction();
IBCQuery1->Execute(1000,0);
Trs->Commit();
"Invalid batch parameters count"
Where did I done wrong?
Thanks in advance.
Sugi.