程序使用VC+ADO一个已经存在的数据集,我想在其中添加新的记录(AddNew),可能遇到的异常情况是原有数据集中可能存在相同关键字的记录,也就是AddNew以后Update会报出异常,请问我如何能够在一个函数内实现这个功能呢?顺带说一下我目前的做法,可能比较笨,希望能得到您的指点:
保留新的数据记录各个字段的取值,按照表的关键字段和取值查询目标表,如果存在这样的记录,就首先删除存在的记录,然后再使用AddNew、Update。这样子确实效率很低,尤其新加的数据记录很多的时候,毕竟要超作2次数据库,有没有其他办法呢?

解决方案 »

  1.   

    能否这样:
    数据库中设置成主键后,相同主键update不会执行成功,在try、catch中捕获异常,如果是重复主键异常,删除当前记录,再插入。
    如果是小部分重复主键记录,大部分记录只需一次数据库操作。
      

  2.   

    我就是按照这个思路来做的,
    有两个函数:
    CheckRecord():检查目标数据集是否有重复关键字记录,有则删除
    AddNewRecord():在上一步骤以后执行,没有重复关键字,就不会有异常报出
      

  3.   

    我在使用VC的数据库处理时感觉数据库的OPEN花的时间较长,假如你不是多次打开记录集,不会花
    这么长时间吧?
      

  4.   

    如果存在这样的记录,就首先删除存在的记录,然后再使用AddNew、Update。修改成如果存在这样的记录,就Edit存在的记录,然后再使用Update。