使用CRecordset update()函数不能更新

     最近做一个有数据库编程的项目,使用了CRecordset类。总结下心得,方便自己,方便后学的人。

    在<Visual C++数据库实用编程100例>中介绍了有关CRecordset类的具体用法。那么有以下两个

问题:

   1.CRecordview这个类做了什么?

     它继承自CFormview,在OnInitialUpdate()函数中调用了CRecordset类的open()方法。

     因为vc++并不能直接生成继承自CRecordview类,要自己一点一点加进去。包括如何引入CRecordset

   对象或指针。但是如果你知道了CRecordview做了什么,不妨这样做:

   SDI程序中自成一个继承自CFormview的类,在新生成的子类的构造函数中调用CRecordset的open()方法

   在析构函数中调用CRecordset的close()方法.程序中可以自由使用CRecordset对象。

 2.update()函数为什么不能更新?

   CRecordset类通过RFX_Long()...数据交换实现了数据库与CRecordset的交互。

   但是如果使用了DDX_FieldText(),并不能完全实现控件与CRecordset对象的数据交互。它只限于让控件显示

   来自CRecordset的内容。如果你想更新修改控件值并通过CRecordset对象的update()方法来更改数据库

  那么数据库并不会更新。

   要想让数据库并新,就不要使用DDX_FieldText()方法。应该这样:

   m_set.edit();

   m_set.intval = getdlgitemint(ID_EDIT);//即这一过程要手工获取,而不是通过DDX_FieldText()方法

  m_set.update();

  <Visual C++数据库实用编程100例>和<mfc数据库编程>使用DDX_FieldText()方法时,所有示例仅限于显示

    CRecordset的内容,但不更改。所以这明显是个大坑。如果你不是亲身体会,你就不会问:为什么不讲出来。


    

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值