我用MFC的CRecordset类来读取SQL SERVER数据库中的表,原来运行正常,但是当对数据库进行备份、还原操作后(利用“企业管理器”,表的内容完全相同),再读取同一张表,程序显示“检索记录出错”。这时,如果我把MFC自动生成的CRecordset类文件删掉,然后再自动创建一个同样的类,再绑定一次,就又可以运行正常了。请问:是MFC本身的BUG,还是我哪里操作不对?如果表很多的话,每还原一次就要重新自动生成CRecordset类文件,不是很麻烦?

解决方案 »

  1.   

    请问,你的CRecoredset是只读的还是动态的?
    我可以肯定不是MFC自身的问题,因为我前段时间做过类似的程序。
      

  2.   

    关联数据库里的表的时候,选的是snapshot,打开的语句是这样:
    CString strQuery;
    strQuery.Format("select * from MyTable");
    mySet.Open(AFX_DB_USE_DEFAULT_TYPE,, strQuery);奇怪的是,如果不用select语句,直接mySet.Open();就可以打开。我是把数据库备份到文件,然后在另一台机器上新建一个同名的数据库,再从文件还原到该数据库里,然后就不行了。但是,我如果把MFC自动生成的类删除,再重新自动生成一遍(完全一样的步骤),再编译运行,就又可以了。怎么回事啊?