vc++中使用ado方式操作oracle数据库,VC+ADO操作数据库注意事项(1)

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

用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'。如:

cbef093dcc044b2793832001e2365e43.pngCString szSQL;

cbef093dcc044b2793832001e2365e43.png szSQL.Format("insert into T_TABLE(NAME, BIRTHDAY \cbef093dcc044b2793832001e2365e43.pngvalues('%s','%s')",cbef093dcc044b2793832001e2365e43.pngszName,//CString      szName;cbef093dcc044b2793832001e2365e43.pngdtBirth.Format());//COleDateTime dtBirth;

2)日期的比较

COleDateTime的格式要与数据库中的日期格式一致。否则定出问题。如对短日期类型:

注意用#%s#

cbef093dcc044b2793832001e2365e43.pngCString szSQL;

cbef093dcc044b2793832001e2365e43.pngszSQL.Format("select * from T_GUEST where GUEST_JOINTIME>=#%s# and GUEST_JOINTIME<=#%s#", 

cbef093dcc044b2793832001e2365e43.png      m_dtJoinStart.Format(VAR_DATEVALUEONLY), 

cbef093dcc044b2793832001e2365e43.png              m_dtJoinEnd.Format(VAR_DATEVALUEONLY));

3)Now()函数

Access中有个Now()函数,用来直接获取当前系统的时间,并且可以在SQL中使用。因此,当需要与当前时间比较时,就不需要通过客户端来取了。

欢迎批评指正

64d246b31d618e41c9c5f569286bdf70.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值