最近有个问题想和大家赐教一下,就是怎么更新内存中的DATASET ,对更新DATASET里的每一个DATATABLE都要进行锁住,等自动更新完数据库后再进行解锁。如果有另一个用户登录,将获取一次数据(以后不会获取),然后保存到DATASET里,如果发现第一个更新的DATASET里的更新内容包含第二个DATASET的内容,则直接更新第二个DATASET里的DATATABLE。不知道大家明白不明白我所描述的,因为我对这个执行过程也不太了解,还往各位赐教哈

解决方案 »

  1.   

    我想你的意思是如果数据库中的内容发生变动,需要刷新客户内存中的DataSet吧?
      

  2.   

    不是啊,我的意思是先把数据从数据库端取出来,然后放到内存中DATASET里的DATATABLE,然后再更新这个DATATABLE,更新完后再批量更新回数据库:)
      

  3.   

    确实不太明白你的意思,你用的 static?
      

  4.   

    给你个思路。DataView.ToTable () 查msdn
      

  5.   

    呵呵可能我表达欠缺,我的意思是先从数据把数据提取出来,然后保存到内存的DATATABLE中,然后当用需要更新数据的时候,直接更新内存中的DATATABLE,然后再批量更新数据库,当然在执行更新这个DATATABLE之前,需要对这个DATATABLE进行锁定,以防止不同用户对同一个DATATABLE进行更新。如果有另一个用户登录,则把相应的数据库的这个DATATABLE的信息提取出来,只提取一次,以后不再提取。一直直到到用户退出之后再登录才会重新提取。当用户提取的这个DATATABLE信息正是第一个用户要更新的信息时,那么第一个DATATABLE的相关数据将会自动更新到第二个DATATABLE上。不知道这样说大家还明白不明白,谢谢呵
      

  6.   

    这个你就用线程控制咯。有什么难的。何况这个也能做到DataView.ToTable()
      

  7.   

    这个你就用线程控制咯。有什么难的。何况这个也能做到DataView.ToTable()
    我是想把所有更新都放到内存的临时DATASET的DATATABLE里更新,并锁定没一个DATATABLE,直到更新完数据库后才进行释放,好像即使通讯软件也是这样的吧?
      

  8.   

    我也有过你这种想法,但是这种方法要在服务器的数据库更新不是很频繁的情况下才好使用,不要在客户端最后退出的时候才更新数据库,最好定义一个时间段,每当到了这个时间段就更新一次!至于你说的怎么把DATASET更新到数据库,我不知道具体的方法,但可以把里面的表一张一张更新!
      

  9.   

    呵其实我的意思就把DATASET 里的表进行更新。我还是结贴吧,看来我得弄清问题了才好发表提问