订阅本栏目 RSS您所在的位置: 深山工作室 > ASP > 正文

ASP事务处理 for access

网络 2009/5/6 20:57:19 深山行者 字体: 浏览 8483

所谓事务处理,简单地说,就是所有的数据库操作都可以看做事务处理。当开始一个事务处理后,就打开Web页面与数据库的事务处理通道,此时可以从Web页面上直接更新数据库内容,但是更新结果并不马上真正反映到数据库中。只有在提交事务处理结果后,数据库内容才能被真正更新,否则,所有的操作都无效。

用法举例(db1.mdb中有一个test表,只包含一个name文本字段):

<%
Dim conn,sqlstr,sqlstr2,sqlstr3
Set conn=server.createobject("ADODB.connection")
Conn.connectionstring="provider=microsoft.jet.oledb.4.0; data source=" & server.mappath("db1.mdb")
Conn.open
sqlstr="insert into test(name) values('aaa')"   '正确的SQL语句
sqlstr2="insert into test(name2) values('bbb')"   '错误的SQL语句
sqlstr3="insert into test(name) values('ccc')"   '正确的SQL语句
Conn.BeginTrans
conn.execute(sqlstr)
conn.execute(sqlstr2)
conn.execute(sqlstr3)
If conn.Errors.Count=0 then
     Conn.CommitTrans
     Response.write ""
Else
     Conn.RollbackTrans
     Response.write ""
End if
Conn.close
Set conn=nothing
%>

这样当执行到错误的SQL语句时程序抛出错误信息,不再理会后面第三条SQL语句正确与否,事务处理机制生效,整个提交过程无效。实现运用中我们并不希望将错误信息展示在用户面前,于是我们加了On error resume next语句,如下:

<%
Dim conn,sqlstr,sqlstr2,sqlstr3
Set conn=server.createobject("ADODB.connection")
Conn.connectionstring="provider=microsoft.jet.oledb.4.0; data source=" & server.mappath("db1.mdb")
Conn.open
sqlstr="insert into test(name) values('aaa')"
sqlstr2="insert into test(name2) values('bbb')"
sqlstr3="insert into test(name) values('ccc')"
On error resume next
Conn.BeginTrans
conn.execute(sqlstr)
conn.execute(sqlstr2)
conn.execute(sqlstr3)
If conn.Errors.Count =0 then
     Conn.CommitTrans
     Response.write ""
Else
     Conn.RollbackTrans
     Response.write ""
End if
On Error GoTo 0
Conn.close
Set conn=nothing
%>

这样出现的问题是只要最后一条SQL语句是正确的,那么conn.Errors.Count的值就必定为0,这样的结果是先前错误的SQL语句不会执行,正确的SQL语句会被正确执行,整个事务处理机制基本上等于失效,解决的办法是将conn.Errors.Count改为err.number,代码如下:

<%
Dim conn,sqlstr,sqlstr2,sqlstr3
Set conn=server.createobject("ADODB.connection")
Conn.connectionstring="provider=microsoft.jet.oledb.4.0; data source=" & server.mappath("db1.mdb")
Conn.open
sqlstr="insert into test(name) values('aaa')"
sqlstr2="insert into test(name2) values('bbb')"
sqlstr3="insert into test(name) values('ccc')"
On error resume next
Conn.BeginTrans
conn.execute(sqlstr)
conn.execute(sqlstr2)
conn.execute(sqlstr3)
If err.number = 0 then
     Conn.CommitTrans
     Response.write ""
Else
     Conn.RollbackTrans
     Response.write ""
End if
On Error GoTo 0
Conn.close
Set conn=nothing
%>

相关阅读
主流web2.0网站的配色参考方案
按钮复制文章URL和复制保留文章的版权
MarkMan 马克鳗,让设计更有爱 (超级给力的页面标注工具)
asp用BcO将二进制转八进制然后再OcB将八进制转二进制
深山旅行社管理系统 v1.8
使用uni-app开始小程序使用腾讯视频插件vid播放视频
利用ASP正则提取文章里面的图片的有效的src地址
兼容ie6+和火狐的禁止右键
共有0条关于《ASP事务处理 for access》的评论
发表评论
正在加载评论......
返回顶部发表评论
呢 称:
表 情:
内 容:
评论内容:不能超过 1000 字,需审核,请自觉遵守互联网相关政策法规。
验证码: 验证码 
网友评论声明,请自觉遵守互联网相关政策法规。

您发布的评论即表示同意遵守以下条款:
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家、社会、集体和公民的合法权益;
二、不得发布国家法律、法规明令禁止的内容;互相尊重,对自己在本站的言论和行为负责;
三、本站对您所发布内容拥有处置权。

更多信息>>栏目类别选择
百度小程序开发
微信小程序开发
微信公众号开发
uni-app
asp函数库
ASP
DIV+CSS
HTML
更多>>同类信息
asp无限级调用分类显示
实现iis6与iis7环境下支持mp4视频随意拖动、预览播放、边下载边播放
做好的网站把http改成https申请SSL域名证书
纯asp根据当前日期计算出当前年份的属相
sql server中前缀为PK、UK、DF、CK、FK表的意思
ASP利用fso读取文件夹里所有文件的名字
更多>>最新添加文章
呼伦贝尔市北天草原旅行社有限公司
四川悠旅地旅游有限公司
连云港五洲旅行社有限公司
邓州市途鸿旅行社
连云港华夏国际旅行社有限公司
重庆长航江山国际旅行社
松原市海航商务旅行社
广西亚太国际旅行社有限公司
更多>>随机抽取信息
另外的一种单项的选择
旅行社线路主题默认模板3
JavaScript max() 方法
商务会议系统
判断用户注册密码强度的JS代码
绝对管用的Swishmax (Flash制作) 绿色特别版下载