大家更新数据时,是用记录集本身的更新功能呀?[如:rs.update],还是写成sql语句,然后执行.{如:conn.execute sql}
----------------------------
我不是专业程序员,所以想了解一下专业的程序员是如何做的.
用记录集自已的更新功能,代码会少些.可是我觉得很麻烦.要考虑到更新不成功怎么办,必须取消更新,否则这个记录集就没法用了.可能是我不摸门吧.
可是用sql语句自已写更新,虽然代码多些,可是觉得灵活性更好些.问问各位老师:我是初学,我的感觉对吗?
大家都是用哪种方法呀?

解决方案 »

  1.   

    我看书的
    基本都是rs.update这样
      

  2.   

    如果要进行并发处理就用rs.update
    比如:一条记录同时被多人操作,当第一个人修改后,其他人的本地纪录集
    是体现不出来的,
    如果这种修改不能被其他用户忽略,那么用rs作就很方便,在后面更新的人会提交失败
    这时可以捕获一个错误,进行相应的处理
    如果没有这种要求,总是希望保存最新的修改,就用sql
      

  3.   

    这个要根据具体情况决定的,我觉得是尽可能的cn.execute sql,这样效率高吧?至少不要rs.open,系统资源占用少。呵呵,我也不是专业的。
      

  4.   

    conn.execute sql传到MSSQL中时,实际上是相当于执行了一个批处理.等同于:update tb set fd=** where fd=**
    GO
    ______________________
    假如你有10条批处理SQL语句(比如UPDATE10条数据),当你执行到第8条时由于种种原因出错,那么第8条以后的语句就不再执行,但前面正确执行的7条SQL也不会UNDO.为了防止这种情况,还需要在VB的代码中这样处理一下:
    cn.BeginTrans
    cn.execute sql
    cn.CommitTrans
    ……
    cn.RollbackTrans
    _________________________________但是经验告诉我们:应当尽量避免在前台锁定数据库中的表!这样会使你的程序在多用户、异地数据存储时使数据库的效率变得很低。比如有两张表department和employee,employee表引用department的ID号作为某员工的部门ID,当你修改该员工的信息时,为了防止此时有人删除department表中的ID,你总该锁定这两张表吧,至少要锁定这两张表的某些行吧,但是如果由于网络数据传输等原因导致这个更新的过程消耗时间过长,那么就会影响其它用户对这两张表的操作。因此现在大家通常都会把有关数据库的操作(ADD、UPDATE、DETETE以及查询等等都做成存储过程放在服务器上,这样只需要传递几个参数到服务器上就可以了而不用传递一大堆的字符串。要知道存储过程在执行时实际上是自动启动一个事务来进行处理,在本机上利用SQLSERVER本身的机制来做这些事情,效率会好很多,因此你可能需要一个相对强壮点的服务器,这就是典型的胖服务器/瘦客户机。
    以上的观点当然只是就事论事,如果你只是一个单机版,又不考虑以后程序的升级,那么你用RS也都无所谓,50个并发用户下的局域网环境中用RS直接处理数据库从绝对速度上讲还要快些。