C++ 使用 ADO 批量操作数据库
使用ADO操作数据库时,如果想要批量插入数据,或者修改数据,可以参考下面的代码:
_RecordsetPtr pRecord;
pRecord.CreateInstance("ADODB.Recordset");
pRecord->CursorLocation = adUseClient;
CString strSQL = L"SELECT * FROM table_name";
try
{
pRecord->Open(_bstr_t(strSQL), pConnection.GetInterfacePtr(), adOpenStatic, adLockBatchOptimistic, adCmdText);
while(!pRecord->AdoEOF)
{
strValue = L"my name is xxx";
pRecord->PutCollect(_variant_t((Long)(0)), _variant_t(strValue));
pRecord->PutCollect("name",_variant_t(strValue));
pRecord->MoveNext();
}
pRecord->UpdateBatch(adAffectAll);
pRecord->Close();
pRecord.Release();
}
catch(_com_error &e)
{
OutputDebugString(e.Description());
}
关键点:
使用本地游标库提供的客户端的游标
pRecord->CursorLocation = adUseClient;
pRecord
的Open
函数中设置LockType
为adLockBatchOptimistic
。- 使用
PutCollect
函数绑定值到指定的字段。 如果想添加一行新的数据使用
AddNew
函数。pRecord->AddNew();
最后使用
UpdateBatch
函数提交数据。pRecord->UpdateBatch(adAffectAll);
如果
UpdateBatch
失败,使用CancelBatch
取消提交。pRecord->CancelBatch(adAffectAll);