ACCESS批量插入(C++,控制台)跪求~~~~
下面是我代码:
问题有两个:1.表为空的时候可以插入;2。表不空时只能插入一条记录!跪求了跪求了!!!请不要到网上复制,既然贴在这儿就已经在网上找过办法了!不要让我换数据库,没条件~~~帮忙顶一哈也好啊!
#include <link2Access.h>
#include <cstringt.h>
#include <iostream>
#include "icrsint.h"
class ATTACKTYPE : public CADORecordBinding
{
BEGIN_ADO_BINDING(ATTACKTYPE)
ADO_VARIABLE_LENGTH_ENTRY2(2, adVarChar, key1, sizeof(key1), status1, TRUE)
ADO_VARIABLE_LENGTH_ENTRY2(3, adVarChar, key2, sizeof(key2), status2, TRUE)
ADO_VARIABLE_LENGTH_ENTRY2(4, adVarChar, key3, sizeof(key3), status3, TRUE)
ADO_VARIABLE_LENGTH_ENTRY2(5, adVarChar, cipher, sizeof(cipher), status4, TRUE)
END_ADO_BINDING()
public:
char key1[10],key2[10],key3[10];
ULONG status1,status2,status3;
char cipher[10];
ULONG status4;
};
int main()
{
_ConnectionPtr m_pConnection;
CoInitialize(NULL);
m_pConnection.CreateInstance(__uuidof(Connection));
try
{
m_pConnection->Open(_ACCESS"Data Source=d:\\我的文档\\Access\\mydb.mdb","","",adConnectUnspecified);
}
catch(_com_error &e)
{
printError(e);
return 1;
}
IADORecordBinding* m_pBind=0;
ATTACKTYPE att;
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
try{
m_pRecordset->Open("attack1",_variant_t(m_pConnection,true),adOpenDynamic,adLockBatchOptimistic,adCmdTable);
m_pRecordset->QueryInterface(__uuidof(IADORecordBinding),(LPVOID*)&m_pBind);
m_pBind->BindToRecordset(&att);
strcpy(att.key1,"aaa");
strcpy(att.key2,"aaa");
strcpy(att.key3,"aaa");
strcpy(att.cipher,"aaa");
for (long i=1;i<=200;++i)
{
m_pBind->AddNew(&att);
}
m_pRecordset->UpdateBatch(adAffectAll);
//m_pBind->AddNew(&att);
//m_pRecordset->UpdateBatch(adAffectAll);
}
catch(_com_error& e)
{
m_pRecordset->CancelBatch(adAffectAll);
}
if(m_pBind)
m_pBind->Release();
if(m_pRecordset)
if(m_pRecordset->State==adStateOpen)
m_pRecordset->Close();
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
if(m_pConnection)
if (m_pConnection->State==adStateOpen)
m_pConnection->Close();
m_pConnection=0;
CoUninitialize();
return 0;
}