若干人同时访问一网页,分别对数据库进行了操作,会乱掉,如何解决这个问题? 比如A和B同时浏览一条记录A删除了这一条记录,B之后也按了删除,因为这条记录已经不存在,就会出错,这个问题好难解决啊而且比如B按下一条,而这条记录已被A删除,又如何判断下一条是哪条 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 存数据的时候首先验证数据库对于当前用户来说,是否被更改,被更改的话,给出提示,不进行数据库更新。举个例子:A更新tableUserInfo中用户ID为userID01的记录。A进入编辑状态后,记录userID01的信息,A提交数据后,首先验证数据库内userID01的记录与先前记录的信息是否相符合,符合的话,就更新这一条数据,不相符,说明在userID01这条记录在A在做输入数据操作的时候,被其他用户更改过,则提示用户A,数据库已被他人更改过。大概就是这样了`希望对你有用。^_^ 感谢anycat,虽然没什么用对lvzm说:“要不在删除前刷新页面,这样得到的下一条肯定存在”不是B删除的,而是A删除了,然后B也想删除大家再帮忙想想啊 asp.net如何实现漂亮一点的errmessage??? 抛出异常,catch是用一个指定页面显示如try{ ...}catch{ Response.Redirect("err.aspx?msg=" + 该记录不存在,可能已经被删除,请刷新页面。);} 對, 寫一個友好的偵錯頁面就行. lrxz(九月鹰飞.Net) 那樣寫很好的. -_____-只看了标题~~~想当然了~~~-_-~~~lrxz(九月鹰飞.Net) <---支持这个 ^_^ 用Sql 里的TimeStamp解决并发性问题。 在数据库有看看有没有并发性错误的解决办法,sql应该是有的。 "用Sql 里的TimeStamp解决并发性问题" 麻烦详解头痛的地方并非并发性,而是不能随时同步,比如A正在显示一条刚刚被B删除的记录,然后这时候A想操作这条记录,他并不知道这条记录已经不存在了 抛出异常,catch是用一个指定页面显示如try{ ...}catch{ Response.Redirect("err.aspx?msg=" + 该记录不存在,可能已经被删除,请刷新页面。);} "用Sql 里的TimeStamp解决并发性问题" 麻烦详解 使用事务Transaction你可以查一下相关的知识再sql语句执行的时候或者在存储过程中都要欠套事务处理可以保证数据的完整性 我提一个想法:在数据库中添加一个“更新”字段每次读取数据库时先保存词字段的值在更新的时候,在SQL语句的where中添加一项 更新=保存的值更新的内容的此项为 保存的值+1这样就处理好了排他处理,这样的方法大家觉得怎么样? if (datareader.read()){ 邦定控件}开始read成功,但是要将值邦定到控件上的这一瞬间要取得的数据被删除了,那么会怎么样datareader是没有把数据读到内存的吧,是不是邦定的时候才从数据库读,那会有什么后果像这样的并发灾难该如何避免??? 怎么会出错呢?假设sql语句是"del table1 where id=1"假如A删除了记录,B再删除怎么会报错?,最多是影响结果为0 if (datareader.read()){ 邦定控件}开始read成功,但是要将值邦定到控件上的这一瞬间要取得的数据被删除了,那么会怎么样datareader是没有把数据读到内存的吧,是不是邦定的时候才从数据库读,那会有什么后果像这样的并发灾难该如何避免???这个问题大家再发表些看法咯,thanks 这个问题大家再发表些看法咯,thanks datareader是没有把数据读到内存的吧,是不是邦定的时候才从数据库读??? to: gaofeng2000(高老师) 也不是这样说吧……就像一些做业务的软件,在web页面下不能实现实时刷新。a和b本来看的都是同一记录,然后a修改了记录,但是在b的页面上就没有刷新这个不是经常的么?而且,如果数据很多,每次都先和数据库做对比,那么工作量也太大了吧…… 数据库的事务机制就专门是用来干这个的。在对数据进行操作时,在sql语句中加上事务处理,就可以保证不会出现并发问题 并发操作,可以用DataRowState.Deleted来该行是否已删除或用事务处理SqlTransaction; activex下载以及安装使用 checkbox赋值 现在ASP.NET 项目开发中常用的设计模式是哪些?? 查找移动窗体objectlist控件中的控件 sql 模态窗体问题(对不住在家啦,我实在没分儿啦.就请大家多包涵啦!) 如何实现在登陆页面中让IE浏览器的后退按钮失效 关于框架链接 ~~~~帮帮忙啊各位!!!!对了的话分全送!!! asp.net 求百分比 简单的语句 哪错啦 >>>WHAT?<<< 这是什么东东?是自定义标签吗? 请问:如何使在一个页面中的连接所指向的内容在另一个页面中的frame中打开么
大概就是这样了`希望对你有用。^_^
不是B删除的,而是A删除了,然后B也想删除大家再帮忙想想啊
try
{
...
}
catch
{
Response.Redirect("err.aspx?msg=" + 该记录不存在,可能已经被删除,请刷新页面。);
}
只看了标题~~~想当然了~~~-_-~~~
lrxz(九月鹰飞.Net)
<---支持这个 ^_^
try
{
...
}
catch
{
Response.Redirect("err.aspx?msg=" + 该记录不存在,可能已经被删除,请刷新页面。);
}
使用事务
Transaction你可以查一下相关的知识再sql语句执行的时候或者在存储过程中都要欠套事务处理可以保证数据的完整性
在数据库中添加一个“更新”字段
每次读取数据库时先保存词字段的值
在更新的时候,在SQL语句的where中添加一项 更新=保存的值
更新的内容的此项为 保存的值+1
这样就处理好了排他处理,这样的方法大家觉得怎么样?
{
邦定控件
}
开始read成功,但是要将值邦定到控件上的
这一瞬间要取得的数据被删除了,那么会怎么样
datareader是没有把数据读到内存的吧,是不是邦定的时候才从数据库读,那会有什么后果
像这样的并发灾难该如何避免???
假如A删除了记录,B再删除怎么会报错?,最多是影响结果为0
{
邦定控件
}
开始read成功,但是要将值邦定到控件上的
这一瞬间要取得的数据被删除了,那么会怎么样
datareader是没有把数据读到内存的吧,是不是邦定的时候才从数据库读,那会有什么后果
像这样的并发灾难该如何避免???这个问题大家再发表些看法咯,thanks
也不是这样说吧……
就像一些做业务的软件,在web页面下不能实现实时刷新。
a和b本来看的都是同一记录,然后a修改了记录,但是在b的页面上就没有刷新
这个不是经常的么?
而且,如果数据很多,每次都先和数据库做对比,那么工作量也太大了吧……
在对数据进行操作时,在sql语句中加上事务处理,就可以保证不会出现并发问题