求教:关闭页面或跳转后修改数据库数据

Bingo_world 2014-02-20 11:02:53
最近项目遇到一个问题,录入页面需要从数据库调用一个编号(编号已经在数据库一个表中存在),如果同一单位两个用户访问录入界面,会同时调用同一个编号,想实现两个用户调用不同的编号。
解决办法:1、使用锁机制,担心死锁的情况。并且锁机制不太了解。
2、修改编号的标记和修改标记的时间。遇到一个问题就是 假如用户关闭网页或页面跳转了。标记如 何更改。

使用了第二个办法。JS用onunload()方法。使用ajax修改标记和时间。但是因为页面关闭了,会造成接收不到返回值。其实不用接受返回值。只需要修改标记和时间就可以了。可以实现修改两次。当第三次的时候 就不修改标记和时间了。
求一个合理的解决办法。谢谢
js:
window.onunload=function()
{
var birthno=$("#Label1").html();//获取页面中使用的编号
var count;
var url="UpdateUnlock.aspx?birthno="+escape(birthno);//UpdateUnlock.aspx 修改编号标记的页面
var obj=CreateAJAX();
if(!obj){alert("不能创建对象!");return;}
obj.open("get",url,false);
obj.onreadystatechange=function()
{
if(obj.readyState==4)
{
if(obj.status==200)
{}
else
{
alert("发生错误!state:"+obj.status);
}
}
}obj.send(null);
}
function CreateAJAX()
{
if(typeof(XMLHttpRequest)!="undefined")
return new XMLHttpRequest();
if(window.ActiveXObject)
{
var objs=["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHTTP"];
var xmlhttp;
for(var i=0;i<objs.length;i++)
{
try
{
xmlhttp=new ActiveXObject(objs[i]);
return xmlhttp;
}
catch(e)
{}
}
}
}


UpdateUnlock.aspx 页面后台办法:

public partial class UpdateUnlock : System.Web.UI.Page
{
cszmBLL objcszmBLL = new cszmBLL();

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string birthno = Request.QueryString["birthno"].ToString();
int count = objcszmBLL.UpdateUnLock(birthno); //修改编号是否使用的标记和标记时间
Response.Write(count);
Response.End();
}
}
}
...全文
179 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bingo_world 2014-02-20
  • 打赏
  • 举报
回复
引用 6 楼 KarasCanvas 的回复:
换个思路,不知道它什么时候会被关闭,但是可以知道它什么时候没被关闭
大哥 使用onunload()这个方法是知道页面关闭的啊。。关闭后走一个方法然后修改数据库不就好了。可是现在的问题是修改两次后。然后就不修改了。有点闹不明白了。所以才求救 或者看看前辈们谁有更合理的解决方法
种草德鲁伊 2014-02-20
  • 打赏
  • 举报
回复
换个思路,不知道它什么时候会被关闭,但是可以知道它什么时候没被关闭
Bingo_world 2014-02-20
  • 打赏
  • 举报
回复
引用 4 楼 KarasCanvas 的回复:
这东西不稳定,不用考虑了
那也需要一个解决办法呀
种草德鲁伊 2014-02-20
  • 打赏
  • 举报
回复
这东西不稳定,不用考虑了
peng2739956 2014-02-20
  • 打赏
  • 举报
回复
如果担心 页面关闭获取不到返回值的话 可以使用缓存机制来储存. 使用完之后 释放掉缓存.
Bingo_world 2014-02-20
  • 打赏
  • 举报
回复
引用 1 楼 u013636763 的回复:
设置过期时间,页面开着的时候定时修改最后活动时间
这个问题也考虑过了。但是担心如果操作时间过长。其他用户正好录入。就又会造成同时调用一个编号。
坐口之蛙 2014-02-20
  • 打赏
  • 举报
回复
设置过期时间,页面开着的时候定时修改最后活动时间
Bingo_world 2014-02-20
  • 打赏
  • 举报
回复
引用 8 楼 KarasCanvas 的回复:
引用 7 楼 Bingo_world 的回复:
[quote=引用 6 楼 KarasCanvas 的回复:] 换个思路,不知道它什么时候会被关闭,但是可以知道它什么时候没被关闭
大哥 使用onunload()这个方法是知道页面关闭的啊。。关闭后走一个方法然后修改数据库不就好了。可是现在的问题是修改两次后。然后就不修改了。有点闹不明白了。所以才求救 或者看看前辈们谁有更合理的解决方法
那东西没保障的,不正常关闭或者正常关了没执行后面的代码都有可能[/quote]现在面临的就是正常关闭了。第三次不执行后面的代码
种草德鲁伊 2014-02-20
  • 打赏
  • 举报
回复
引用 7 楼 Bingo_world 的回复:
引用 6 楼 KarasCanvas 的回复:
换个思路,不知道它什么时候会被关闭,但是可以知道它什么时候没被关闭
大哥 使用onunload()这个方法是知道页面关闭的啊。。关闭后走一个方法然后修改数据库不就好了。可是现在的问题是修改两次后。然后就不修改了。有点闹不明白了。所以才求救 或者看看前辈们谁有更合理的解决方法
那东西没保障的,不正常关闭或者正常关了没执行后面的代码都有可能

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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