CoInitialize(NULL);
_ConnectionPtr pConn;
_RecordsetPtr pRst;
pConn.CreateInstance(__uuidof(Connection));
pRst.CreateInstance(__uuidof(Recordset));
try{
pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=award.mdb","","",adModeUnknown);
}
catch(_com_error e)
{
CString error;
error.Format("连接失败原因:%s",e.Description());
MessageBox(error);
return;
}
pRst->Open("select * from num_range",_variant_t((IDispatch*)pConn,true),
adOpenStatic,
adLockOptimistic,
adCmdText);
//写入num_range表
pRst->AddNew();
pRst->PutCollect(_variant_t("title"),_variant_t(setDialog.m_title));
pRst->PutCollect(_variant_t("smalltitle"),_variant_t(setDialog.m_smallTitle));
pRst->PutCollect(_variant_t("num_from"),_variant_t((long)setDialog.m_numFrom));
pRst->PutCollect(_variant_t("num_to"),_variant_t((long)setDialog.m_numTo));
pRst->Update();
pRst->Close();
//写入jp_rank先将刚刚写入的记录id 查询出来再写入
CString sql;
sql.Format("select * from num_range where title = '%s' ",setDialog.m_title);
pRst->Open(_variant_t(_bstr_t(sql)),
_variant_t((IDispatch *)pConn,true),
adOpenStatic,
adLockOptimistic,
adCmdText);
_variant_t result;
CString str;
result=pRst->GetCollect(_variant_t("id"));
if(result.vt!=VT_NULL)
{
str.Format("%s",_bstr_t(result)); }
pRst->Close();
//写入
pRst->Open("select * from jp_rank",_variant_t((IDispatch*)pConn,true),
adOpenStatic,
adLockOptimistic,
adCmdText);
pRst->AddNew();
pRst->PutCollect("p_num",_variant_t((long)setDialog.m_num0));
pRst->PutCollect("rank",_variant_t("特等奖"));
pRst->PutCollect("content",_variant_t(setDialog.m_num_0a));
pRst->PutCollect("attach",result);
//pRst->MoveNext();
pRst->PutCollect("p_num",_variant_t((long)setDialog.m_num1));
pRst->PutCollect("rank",_variant_t("一等奖"));
pRst->PutCollect("content",_variant_t(setDialog.m_num_1a));
pRst->PutCollect("attach",result);
///pRst->MoveNext();
pRst->PutCollect("p_num",_variant_t((long)setDialog.m_num2));
pRst->PutCollect("rank",_variant_t("二等奖"));
pRst->PutCollect("content",_variant_t(setDialog.m_num_2a));
pRst->PutCollect("attach",result);
//pRst->MoveNext();
pRst->PutCollect("p_num",_variant_t((long)setDialog.m_num3));
pRst->PutCollect("rank",_variant_t("三等奖"));
pRst->PutCollect("content",_variant_t(setDialog.m_num_3a));
pRst->PutCollect("attach",result);
//pRst->MoveNext();
pRst->PutCollect("p_num",_variant_t((long)setDialog.m_num4));
pRst->PutCollect("rank",_variant_t("四等奖"));
pRst->PutCollect("content",_variant_t(setDialog.m_num_4a));
pRst->PutCollect("attach",result);
pRst->Update();
pRst->Close();
pConn->Close();
CoUninitialize();
我通过这段代码向数据库里面一次写入多条记录,但是没写进去,请高手帮忙小弟看看,小弟新手,
问题出在哪里???谢谢!!!!

解决方案 »

  1.   

    //pRst->MoveNext();
    换成pRst->AddNew();
      

  2.   

    result=pRst->GetCollect(_variant_t("id")); 
    if(result.vt!=VT_NULL) 

    str.Format("%s",_bstr_t(result)); } 
    ===
    id是字符串类型的?
      

  3.   

    你调试应该发现这个ID值你取出来是错误的吧。
    str.Format("%s",_bstr_t(result));  这句应该不正确阿
      

  4.   

    先用try包含所有的数据库操作。PutCollect和AddNew至少有返回值啊。
      

  5.   

    //pRst->MoveNext(); 
    换成
    pRst->AddNew();
    pRst->Update()