ADO Recordset AddNew一直抛异常

这篇博客讲述了作者在使用ADO Recordset进行C++数据库插入操作时遇到AddNew异常的问题,以及尝试各种解决方案的过程。从调整CursorType、MoveLast、设置CursorLocation到更换Provider,最终发现最初的问题在于Open后不应立即调用MoveLast,移除该调用后AddNew成功执行。
摘要由CSDN通过智能技术生成

    如果你在某些方面是个小白,那你走每一步都很受挫。

    最近公司做了一个XXX系统(C++),使用ADO连接数据库,系统实现之后发现,数据库的插入效率很是问题,10万条左右的记录用时9分多钟,当然不管是客户端还是服务器的配置都比较低,但应该也不至于速度如此之慢,网上搜了下,有些人的插入效率能达到每秒8000条,看着这些数据我也是醉了,于是,就想优化一下数据库的插入效率。

    当然,我写这个的目的并不是说我的数据库是怎么优化的(最后还是没成功,优化为了10万条用时3分钟,每秒500条,比着8000条还是没法说的)。我的目的是想说一下ADO的记录集(RecordsetPrt)的AddNew()从不能用到能用的艰辛过程,如果你也遇到这种问题了,或许对你有帮助。

    首先先交代一下背景,一开始插入数据库的操作是使用的ADO中的连接对象(ConnectPtr),然后通过将要插入的数据拼成SQL执行的方式来进行数据插入。由于插入效率太低,我准备改成使用记录集(RecordsetPtr)来进行插入处理。

    上网搜了下,使用RecordsetPtr来插入时很简单,只要Open之后,AddNew,然后PutCollect,最后Update或者UpdateBatch就行了。于是照着葫芦画了个瓢,结果怎么都不行,一直在Support(adAddNew)的时候返回False,将Support注释之后,AddNew一直抛异常。

     对于这个现象,我首先考虑的是࿰

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值