为了提高大量入库效率,使用了事务,代码如下
try
{
pDBConn = OpenDBConn();
pDBConn->BeginTransaction();
CADORecordset DataRecord( pDBConn );
DataRecord.Open(_T("ReceInfo"), adCmdTable, adLockOptimistic);
for (vector< UpData* >::iterator it = v_realdata.begin(); it != v_realdata.end(); it++)
{
UpData* pupdata = *it;
DataRecord.AddNew();
fillRealVal(DataRecord, pupdata); //用记录集对象填充字段值
}
DataRecord.Update();
pDBConn->CommitTransaction();
//DataRecord.UpdateBatch();
}
catch (...)
{
pDBConn->RollbackTransaction();
return false;
}
上述代码 DataRecord.Open(_T("ReceInfo"), adCmdTable, adLockOptimistic);会卡很久,请问批量入库时open的参数该如何设置,如果使用了UpdateBatch是不是可以替代CommitTransaction,BeginTransaction,怎样才能做到效率最高?求指导
------解决思路----------------------
使用动态 SQL,一次拼接出多个 insert 语句,要快好多。
------解决思路----------------------
用SqlBulkCopy,或者用Table DataType 试一试
------解决思路----------------------
bulk insert 是 sql语言,和insert 一样。另外,你可以试试再多几行拼接,比如500或1000