數據 新增,修改,刪除之後再進行保存 出現並行違規的問題!!!答得好有高分!!

wwwiii520 2008-05-21 11:32:13
首先用數據集 ds 填充GridView.
然後對GridView數據行做新增,修改,刪除操作,之後對所作的編輯一起存入數據庫
現在遇到這樣的問題了,
由於我在 調用數據填充到ds 至 保存GridView所作的編輯 這段時間內...有其它用戶修改過數據
這樣.ds 就從數據表中找不到原始的資料數據.就提交不了

我現在的想法是..
在保存之前,再聲明一個sqldataAdapert,然後用新的sqldataAdapert.update(ds.GetChanges())
注意:保存的是變更ds的復寫

不知道這樣行不行.....高人們指教下..或提點更好的意見

還有一點:批量保存數據就衹能update(dataset) 和 用循環一條條的保存嘛????
...全文
93 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
LIUMRZY 2008-05-23
  • 打赏
  • 举报
回复
长知识了!
指间的风 2008-05-22
  • 打赏
  • 举报
回复
问题是,只要是并发,怎么处理起来都不是很容易。都需要化时间去权衡。
huangdanming 2008-05-22
  • 打赏
  • 举报
回复
学习...
九章落地 2008-05-21
  • 打赏
  • 举报
回复
楼主有空你可以了解一下数据库中关于"乐观锁"和"悲观锁"的知识。

Adapter使用的是“乐观锁”,它默认产生的SQL语句(insert into,update,delete)执行时会判断,原始值是否已经被修改,若被修改过,便不会更新。这是有必要的。
你可以通过Adapter.ContinueUpdateOnError = false;来屏蔽掉错误,这样未改动过的记录可正常更新回数据库,而改动过的记录不变。

若坚持使用Adapter.Update更新,你也可以手动修改相关命令(UpdateCommand,InsertCommand,DeleteCommand),去掉where中关于“Original_字段"的判断。
LutzMark 2008-05-21
  • 打赏
  • 举报
回复
并发和脏读的问题
tsyz2007 2008-05-21
  • 打赏
  • 举报
回复
为了保有证数据的准确,在并发访问时是应该加上访问限制的.
lwp850210 2008-05-21
  • 打赏
  • 举报
回复
此时不让别的用户修改 嘿嘿
wwwiii520 2008-05-21
  • 打赏
  • 举报
回复
我再次填充出來的數據是了數據庫裡最新的數據了啊
amandag 2008-05-21
  • 打赏
  • 举报
回复
在保存之前,再聲明一個sqldataAdapert,然後用新的sqldataAdapert.update(ds.GetChanges())
不知道這樣行不行.....高人們指教下..或提點更好的意見
==
肯定不行,如果你的数据在数据库里已经被修改,这条数据是不能提交成功的


還有一點:批量保存數據就衹能update(dataset) 和 用循環一條條的保存嘛????
==
就ADO.NET本身的功能,应该只能这样了
鼻涕蛋蛋 2008-05-21
  • 打赏
  • 举报
回复
只是稍微说下自己的经验
操作数据库的时候,最好能把相关表锁定,这样应该会最大程度上的避免出现并发问题,但是感觉处理过于粗暴了。。
还有就是,Adapter.Update()我原来测试过,只能更新数据源是单个表的情况,如果,数据源是多个表内/外连接的,好像就不能正确执行了。我是一条一条循环更新/插入/删除的,不知道有没有高手给个思路。一直想换个方法,但是没有什么好思路。。。
smartstar2005 2008-05-21
  • 打赏
  • 举报
回复
你可以在抽出数据的时候将指定的列锁住,这样别人就不能修改。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧