怎样向数据库写入多条记录

jasonM2008 2008-05-12 10:29:41
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();
我通过这段代码向数据库里面一次写入多条记录,但是没写进去,请高手帮忙小弟看看,小弟新手,
问题出在哪里???谢谢!!!!
...全文
75 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
快乐鹦鹉 2008-05-12
  • 打赏
  • 举报
回复
怎么回事?
jasonM2008 2008-05-12
  • 打赏
  • 举报
回复
写进去了,哈哈!
shakaqrj 2008-05-12
  • 打赏
  • 举报
回复
//pRst->MoveNext();
换成
pRst->AddNew();
pRst->Update()
KeSummer 2008-05-12
  • 打赏
  • 举报
回复
先用try包含所有的数据库操作。

PutCollect和AddNew至少有返回值啊。
jasonM2008 2008-05-12
  • 打赏
  • 举报
回复
哦!但是没有报错啊 !!!
快乐鹦鹉 2008-05-12
  • 打赏
  • 举报
回复
你调试应该发现这个ID值你取出来是错误的吧。
str.Format("%s",_bstr_t(result)); 这句应该不正确阿
jasonM2008 2008-05-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 shakaqrj 的回复:]
//pRst->MoveNext();
换成pRst->AddNew();
[/Quote]
改了还是不能写进去!!!郁闷啊 !!
jasonM2008 2008-05-12
  • 打赏
  • 举报
回复
id 是自动编号!!
快乐鹦鹉 2008-05-12
  • 打赏
  • 举报
回复
result=pRst->GetCollect(_variant_t("id"));
if(result.vt!=VT_NULL)
{
str.Format("%s",_bstr_t(result));

}
===
id是字符串类型的?
shakaqrj 2008-05-12
  • 打赏
  • 举报
回复
//pRst->MoveNext();
换成pRst->AddNew();
scq2099yt 2008-05-12
  • 打赏
  • 举报
回复
写入纪录后要Update

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧