conn.execute是异步操作,不影响后续代码的执行,也比较快。
但是,有些场合可能需要addnew,例如:从串口传入的数据,又需要通过表的主键排除重复记录,此时只要设置on error resume next就可以不打断进程地执行下去。
所以,方法没有优劣,只有适用。

解决方案 »

  1.   

    conn.execute和Rs.addnew 的用法也不一样啊
    conn.execute 可以执行任何SQL操作,Rs.Addnew只是对当前记录集进行新增,差得太远了
      

  2.   

    楼上:(谢谢)
    哦..是这样的.
    conn.execute "insert into...."和rs.addnew的比较.
    对于of123的回答觉得不错.
    谢谢.谁还有更加好的解释?欢迎指教...
      

  3.   

    rs.addnew一般要配合rs.update其实rs.addnew执行后也转成了insert语句
    rs.execute前面的都说了
      

  4.   

    应该尽量回避用recordset对数据库进行的添删改操作ado三个对象都可以对数据进行添删改查操作,
    但要合理分配和使用这三大对象
    1、使用connection仅做连接用
    2、用command对数据库进行添删改操作
    3、用recordset对数据库查询
      

  5.   

    cn.execute 是否异步是由它的参数决定的 。所以我认为of123()的这种说法不对
    我觉得cn.execute直接送到数据库种 。锁定纪录的时间很短 而rs.addnew则一开始就锁定了纪录,只有在update后才解锁 容易引起撞车。其他的我同意
      

  6.   

    请教 of123:
    那么一个批 SQL 语句,是不是异步执行的?我一直对这个比较模糊。
      

  7.   

    而rs.addnew则一开始就锁定了纪录,只有在update后才解锁 容易引起撞车你说的是悲观锁的情况。而实际上,大多数场合是乐观锁(有些提供者不支持悲观锁)。乐观锁只有执行update时锁定。请教 of123:
    那么一个批 SQL 语句,是不是异步执行的?我一直对这个比较模糊。是的。你做一个批量比较大的添加或更新操作试一下就知道了。所以才会有如何知道execute是否完成的问题。