日期:2014-05-16  浏览次数:20376 次

当一个界面有很多数据要修改,怎么操作会更快一点
本帖最后由 jiben1002 于 2014-02-26 23:55:49 编辑
   问题描述:假如我的一个窗体,有很多文本框,复选框之类的,现在操作这个界面,保存的时候,用什么方式update数据库,目前我自己的想法是有两个;第一个是,界面的数据都update一下,可是我想想,这样操作有点笨,可能修改数据不多,但是界面数据量不小,这样就挺耗时间的,所以就想到第二种方法,数据变过的进行更新,但是,我自己的水平有限,不知道用什么方式进行标识,当然自己能想到的标识是对每个变量都定义一个标识,但是如果数据量大的话,这样好像也不是很好,我现在可能要操作到的数据一百多条。
   所以,在这希望大神们提建议,不胜感激。谢谢
   
   
------解决方案--------------------
或者你要考虑数据修改中的逻辑关系,假设要修改100个地方,但是都是有关联的,不能单独修改某一处,那你就必须同时修改。你可以把参数(也就是修改后的值)缓存起来,当界面点击类似【确定修改/保存】的时候再一次性提交到数据库,减少因为频繁交互带来的问题。不过如果影响的数据量非常大的时候,可能要换其他方法,比如使用类似快照隔离级别、部分响应等等,好像一下子说不完...
------解决方案--------------------
一般的这种编辑,都是在控件中的,通过控件来操作,应该能自动完成数据的更新。

你再找找,应该有的
------解决方案--------------------
因为你也不知道用户他修改了哪些数据,所以update肯定要一条记录都要修改。但是如果你窗体上的数据分布存储在不同的数据库表中,就可以考虑将同一个表的数据放在一个tab页里面,分tab页进行保存。这样用户看起来也爽朗些,否则都放在一个窗体页面,看起来很痛苦。
------解决方案--------------------
通常来说是把窗体的数据提交到sqlserver,然后用where条件来update“需要更新”的数据,如果你把是否有修改的数据放到前端,可能有一定程度的不标准,比如你在修改数据的过程中,可能底层表的数据被其他用户修改了
------解决方案--------------------
所谓的提交可以理解为调用一个存储过程或者直接T-SQL,把前端修改后的整个结果传给sqlserver,然后在sqlserver中对比原有数据,通过where来判断哪些需要更新、删除、insert等操作。
------解决方案--------------------
其实提交数据库更新了数据之后,界面就没有必要刷新了,因为界面的数据已经是最新的了.
------解决方案--------------------
可以传递数据集,也可以把前端的数据组合成一个临时表。
------解决方案--------------------
引用:
Quote: 引用:

一般的这种编辑,都是在控件中的,通过控件来操作,应该能自动完成数据的更新。

你再找找,应该有的
谢谢,但是,我觉得还不能自动更新,因为用户可能,不需要保存这些数据,应该点击保存后在全部更新


对 是这样的,当用户点击保存后,你在通过控件的方法,来update数据
------解决方案--------------------
如果你这个是频繁修改的话,而且确实字段非常多,那么就弄个临时表,把数据插到临时表,再统一更新
------解决方案--------------------
要考虑这这情况:
用户a的界面显示了100个数据
用户b的界面显示了100个数据
a修改了其中的x,y
保存
b修改了其中的x,z
保存

你希望最终数据库里y是怎么样的结果?