asp提交请求后一定几率丢失数据库更新

GoEastward 2009-08-06 01:35:22
不知道大家在asp开发时候是否碰到过,asp提交请求后有一定几率丢失数据库更新,例如新增一个商品,在保存提交后,更新操作的代码也加入了数据库事务以及出错的异常捕捉,但却还是会有时候出现没有任何出错提示,没有捕捉到任何异常的情况下丢失了该次的数据库更新操作,即没有成功插入新记录。大家有何解决方法吗?是否是微软asp本身的缺陷。
...全文
149 12 打赏 收藏 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
toury 2009-08-07
  • 打赏
  • 举报
回复
我很早以前曾经遇到过,但没仔细找原因。估计是字段里有和系统保留字冲突的,这种情况不报错但INSERT INTO写不进库,ADDNEW可以。所以后来用INSERT我通通给字段加[]。呵呵
GoEastward 2009-08-07
  • 打赏
  • 举报
回复
好的谢谢,换一种思路,rs('xxx')

我只是好奇,为何在不用储蓄过程的情况如果单纯是在页面用connection对象的execute方法执行sql更新语句,即使加入了事务的异常捕捉会出现一定几率的丢失,而且貌似是根本捕捉不了的。因为如果捕捉得了它会提示的阿。这个在动网access版论坛发帖时候也出现过,还有那些动网access插件。那么我觉得这个是比较糟糕的,糟糕在它没有任何异常捕捉到却丢失了。

我打算用SELECT SCOPE_IDENTITY() AS Current_Identity 来捕捉那个插入的新自增id,然后select一下看看记录集是否为空确保已经插入。
toury 2009-08-07
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 goeastward 的回复:]
还想多问一下,你当时是不是大部分情况下能insert进去,但某一、两次丢失了?
抑或数量一共几次,全部都是丢失?
[/Quote]
太遥远的事情不记得了。这样吧,你在判断的时候加多一个条件,看看什么情况:
if conn.errors.count>0 or err then
rollback.........
else
conmitt..........
end if
GoEastward 2009-08-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 toury 的回复:]
我很早以前曾经遇到过,但没仔细找原因。估计是字段里有和系统保留字冲突的,这种情况不报错但INSERT INTO写不进库,ADDNEW可以。所以后来用INSERT我通通给字段加[]。呵呵
[/Quote]
还想多问一下,你当时是不是大部分情况下能insert进去,但某一、两次丢失了?
抑或数量一共几次,全部都是丢失?
GoEastward 2009-08-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 toury 的回复:]
我很早以前曾经遇到过,但没仔细找原因。估计是字段里有和系统保留字冲突的,这种情况不报错但INSERT INTO写不进库,ADDNEW可以。所以后来用INSERT我通通给字段加[]。呵呵
[/Quote]
多谢多谢!!!
cwbok 2009-08-06
  • 打赏
  • 举报
回复
用
rs("xxx")=
试试
GoEastward 2009-08-06
  • 打赏
  • 举报
回复
谢谢楼上的,其实我有部分页面只有一条insert。结构类似动网access版的Dvbbs.excute方法,加入了异常捕捉,但还是有时候会发生千分之一左右有些录入莫名其妙丢失,而且on error 是捕捉不了这个,导致页面跳转到成功更新页。

hookee 2009-08-06
  • 打赏
  • 举报
回复
试试看
conn.execute("insert into tbla(aa,bb) values('aa','bb');insert into tblb(cc,dd) values('cc','dd');")
或用
recordset open,conn,1,4打开批量添加
rs.addnew
...
rs.updateBatch
GoEastward 2009-08-06
  • 打赏
  • 举报
回复
那是否必须把更新操作都改为存储过程才更保险了?
GoEastward 2009-08-06
  • 打赏
  • 举报
回复
因为只是两条Insert,所以更新操作没有使用存储过程:
on error resume next
conn.BeginTrans
conn.execute("insert into tbla(aa,bb) values('aa','bb')")
conn.execute("insert into tblb(cc,dd) values('cc','dd')")
if conn.Errors.Count>0 then
conn.Errors.Clear
conn.RollBackTrans
response.write "有错误"
else
response.write "无错误"
Conn.CommitTrans
end if


cngothic 2009-08-06
  • 打赏
  • 举报
回复
这不可能是ASP本身的缺陷。
从你描述来看应该是SQL上面的问题。你的存储过程有问题吗?
想下。如果你的顺利使用存储过程。在存储过程内利用个个参数进行更新等操作。会不可能不成功吗?
lzp4881 2009-08-06
  • 打赏
  • 举报
回复
没遇到过。这种情况多数都是程序不严谨造成的,别怪这怪那的了。
内容概要:本文围绕基于物理场的动态模式分解(piDMD)展开研究,重点探讨其在流体力学、热传导及多物理耦合系统中的建模与应用。通过Matlab代码实现,将传统的动态模式分解(DMD)方法与物理场控制方程相结合,引入物理约束以增强数据驱动模型的物理一致性,从而提升对复杂非线性系统的模态提取精度与长期预测能力。文章系统阐述了piDMD的理论基础、数学推导过程与算法实现步骤,并结合典型物理场仿真案例(如Navier-Stokes方程驱动的流场演化)进行验证,展示了其在降阶建模、主导模态识别和时空动态可视化方面的优越性能,适用于高维、强耦合、非平稳系统的分析与优化。; 适合人群:具备一定数值计算、流体力学、控制理论或数据驱动建模背景,熟悉Matlab编程与线性代数运算,从事科学研究、工程仿真或系统辨识工作的研究生、科研人员及工程师。; 使用场景及目标:①实现对流场、温度场等物理场的高效降阶建模与动态行为预测;②提取符合物理规律的关键模态,用于系统稳定性分析与控制设计;③支撑复杂系统的状态估计、异常检测与优化调控等下游任务。; 阅读建议:建议读者结合提供的Matlab代码逐行调试与运行,深入理解piDMD算法中物理约束的嵌入方式及其对模态质量的影响,同时可尝试将其迁移至其他偏微分方程描述的物理系统中进行拓展验证与应用。

28,402

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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