求教:AddNew以后Update的问题

忠向 2004-12-19 10:35:20
程序使用VC+ADO

一个已经存在的数据集,我想在其中添加新的记录(AddNew),可能遇到的异常情况是原有数据集中可能存在相同关键字的记录,也就是AddNew以后Update会报出异常,请问我如何能够在一个函数内实现这个功能呢?

顺带说一下我目前的做法,可能比较笨,希望能得到您的指点:
保留新的数据记录各个字段的取值,按照表的关键字段和取值查询目标表,如果存在这样的记录,就首先删除存在的记录,然后再使用AddNew、Update。

这样子确实效率很低,尤其新加的数据记录很多的时候,毕竟要超作2次数据库,有没有其他办法呢?
...全文
172 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
忠向 2004-12-19
  • 打赏
  • 举报
回复
是的,我在两个函数中都是从新打开数据库的,估计瓶颈就在这里
iamzxx 2004-12-19
  • 打赏
  • 举报
回复
我在使用VC的数据库处理时感觉数据库的OPEN花的时间较长,假如你不是多次打开记录集,不会花
这么长时间吧?
忠向 2004-12-19
  • 打赏
  • 举报
回复
只是执行2步数据库操作,一个源表只有1000行记录的数据集导入到目标数据集中居然要几分钟,实在效率底下
忠向 2004-12-19
  • 打赏
  • 举报
回复
我就是按照这个思路来做的,
有两个函数:
CheckRecord():检查目标数据集是否有重复关键字记录,有则删除
AddNewRecord():在上一步骤以后执行,没有重复关键字,就不会有异常报出
MZP 2004-12-19
  • 打赏
  • 举报
回复
能否这样:
数据库中设置成主键后,相同主键update不会执行成功,在try、catch中捕获异常,如果是重复主键异常,删除当前记录,再插入。
如果是小部分重复主键记录,大部分记录只需一次数据库操作。
忠向 2004-12-19
  • 打赏
  • 举报
回复
谢谢大家
到年底了,我这几天脑子有点不太清楚了
仔细想想好像问题不是很大的,我再试试看
双杯献酒 2004-12-19
  • 打赏
  • 举报
回复
如果存在这样的记录,就首先删除存在的记录,然后再使用AddNew、Update。

修改成

如果存在这样的记录,就Edit存在的记录,然后再使用Update。
oyljerry 2004-12-19
  • 打赏
  • 举报
回复
在初始化中打开数据库

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧