使用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());  
}

关键点:

  1. 使用本地游标库提供的客户端的游标

    pRecord->CursorLocation = adUseClient;
  2. pRecordOpen 函数中设置 LockTypeadLockBatchOptimistic
  3. 使用 PutCollect 函数绑定值到指定的字段。
  4. 如果想添加一行新的数据使用 AddNew 函数。

    pRecord->AddNew();
  5. 最后使用 UpdateBatch 函数提交数据。

    pRecord->UpdateBatch(adAffectAll);
  6. 如果 UpdateBatch 失败,使用 CancelBatch 取消提交。

    pRecord->CancelBatch(adAffectAll);

标签: MFC, C++, ADO, VC, 批量插入, 批量删除

添加新评论