我往Access数据库里的表里添加纪录,可每次都恢复盖上次的纪录,请问会是什么原因?
我的程序很简单,大概如下:
     CMyRecordset* m_pSet(&database);
     m_pSet->Open();
     m_pSet->AddNew();
     m_pSet->m_Name="王军";
       ...........
     m_pSet->Update();
其中,CMyRecordset是用mfc创建的类,基类是CDaoRecordset;

解决方案 »

  1.   

    可我确实遇到了覆盖的问题,我是在Access里建的表,问题在那儿呢?
      

  2.   

    你在哪里知道被覆盖了?用Update()后如果要查看表中的数据要刷新后才能看到最新的数据。m_pSet->Update();
    m_pSet->Refresh();
      

  3.   


    主  题:  多线程+数据库+网络通讯+性能优化的综合应用大讨论!!!(在线讨论) 
    作  者:  laozhuang (老庄)  
    等  级:    
    信 誉 值:  100 
    所属论坛:  Visual C++ 
    问题点数:  20 
    回复次数:  3 
    发表时间:  2002-06-26 13:49:12 
       
     
       
    有这样一个应用:
    要从一个oracle 数据库表中取出几万条记录,经过逐笔数据处理后用TCP/IP方式发送给银行的后台,由银行进行进一步的处理最后结果返回。
    返回的结果要再次写回刚才的oracle 数据库表中。用的是update(更新记录)的方法。现在的问题是:如何保证能在最快的时间内处理完尽量多的数据比如要求 每秒钟能处理 2笔以上的交易。问题是如果想单笔处理要达到这个要求是无法做到的。我的解决方法:用多线程来处理每一笔交易,即每从数据库中读取一条记录开一个线程,立即再读取下一条记录再接着开一个新线程如此一直到记录取完为止。
    关键问题出现了:如果记录数据无比巨大怎么办线程数,要有一定的限制。所以我想用一个线程记数器在记数超过一个数后只能暂停做下一笔的交易,每做完一笔交易线程记数器值减1。如此来保证并发的交易实现交易速度的极大提升。不知各路高手有什么好的建议请不吝赐教! 
     
      

  4.   

    我每次添加纪录後,打开数据库就可以看到以前的纪录被覆盖掉了呀.
    m_pSet->Refresh()需要吗?
      

  5.   

    查看表中的数据时,先执行m_pSet->Close(),结果是否一样
      

  6.   

    我的open函数里,没加任何参数,用的都是默认值,会有影响吗?我也担心.
    数据没有加在前面.
      

  7.   

    m_pSet->Open();
    m_pSet->MoveLast();
         m_pSet->AddNew();
         m_pSet->m_Name="王军";
           ...........
         m_pSet->Update();
      

  8.   

    m_pSet->Open();括号里什么都没有马?应该有一个SQL语句把?
      

  9.   

    不加SQL语句不行吗?我是要打开一个表(纪录集).
    如果要加SQL,该怎么加?能解决这个问题吗?
      

  10.   

    我已经找到问题的所在了,谢谢大家.我在程序后面加了m_pSet->Delete(),造成上面的问题.顺便问一句:Delete或Close该加在程序的什么地方呢?
      

  11.   

    我已经找到问题的所在了,谢谢大家.我在程序后面加了m_pSet->Delete(),造成上面的问题.顺便问一句:Delete或Close该加在程序的什么地方呢?