VC+ADO操作数据库注意事项

 
用ADO在VC下进行数据库客户端开发,稍有不甚就会出现致命错误,错误提示又匪夷所思,因此需要小心翼翼。最近做的个项目时,我是深深的体会到这一点。针对出现的问题,我总结了以下几点。
­
说明:1、用VC开发数据库系统真是痛苦!
            2、以下的操作都是针对Access数据库。
­
­
1、_RecordsetPtr::Open与_RecordsetPtr::Close要对应使用
一个RescordSet被Open后,一定要Close掉。并且不能被连续Open,即不能嵌套使用。这种错误,往往发生在函数之间的调用。两个函数使用同一个_RecordsetPtr,但其中的一个函数中未Close就调用另一个函数,灾难就此发生。
2、_RecordsetPtr与_CommandPtr
两者都可以完成记录的查询、更新、插入操作。但在使用中,我感觉用_RecordsetPtr完成查询功能,用_CommandPtr完成插入和更新操作比较方便
3、对日期操作
日期操作感觉很麻烦,不仅仅是因为日期由多种格式(短日期、长日期……)。VC中有的时间类型有COleDateTime和CTime,使用COleDateTime便于与ADO交换数据。
1)日期的插入、更新
把日期Format字符串就可以了。 注意用'%s'。如:
­
CString szSQL;
szSQL.Format("insert into T_TABLE(NAME, BIRTHDAY /
   values('%s', '%s')",
   szName,            //CString      szName;
   dtBirth.Format()); //COleDateTime dtBirth;
­
2)日期的比较
COleDateTime的格式要与数据库中的日期格式一致。否则定出问题。如对短日期类型:
注意用#%s#
­
CString szSQL;
szSQL.Format("select * from T_GUEST where GUEST_JOINTIME>=#%s# and GUEST_JOINTIME<=#%s#",
      m_dtJoinStart.Format(VAR_DATEVALUEONLY),
              m_dtJoinEnd.Format(VAR_DATEVALUEONLY));
­
3)Now()函数
Access中有个Now()函数,用来直接获取当前系统的时间,并且可以在SQL中使用。因此,当需要与当前时间比较时,就不需要通过客户端来取了。
­
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值