利用ASP实现事务处理的方法

农家原生态食品

农家原生态食品

2016-01-29 18:51

利用ASP实现事务处理的方法,利用ASP实现事务处理的方法
 

    在开发Web应用时,无一例外地需要访问数据库,以完成对数据的查询、插入、更新、删除等操作。受应用逻辑的影响,有时需要将多条数据库操作指令组成一个工作单元(事务)。在数据库中,所谓事务是指一组逻辑操作单元,它使数据从一种状态变换到另一种状态。为确保数据库中数据的一致性,应当用离散的成组的逻辑单元操作数据:当它全部完成时,数据的一致性可以保持;而当单元中的一部分操作失败时,整个事务会被全部忽略,所有从起始点以后的操作全部退回到开始状态。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/asp/)

    实际上,在默认方式下对数据库的每一次操作都是隐含的事务处理。本文以一个典型的用户注册程序为例,介绍三种利用ASP实现事务处理的方法:基于ASP数据库组件的解决方法、基于数据库内部的事务处理机制的解决方法和基于MTS组件的解决方法。
 
    程序功能
    在SQL Server数据库中建立两个表:USER表和USERDOC表。其中USER表中存放的是注册用户的用户名和密码,USERDOC表中存放的是该注册用户的个人资料,并且以用户名为索引。下面是表USER和USERDOC的定义:
Create Table USER(userName varchar(30),userPasswd varchar(30))
Create Table USERDOC(userName varchar(30),Age int,Sex int,PhoneNumber varchar(20),Address varchar(50))

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/asp/)

    当用户请求注册时,ASP脚本先将用户名和密码插入到USER表中,然后在USERDOC表中插入用户个人信息(年龄、性别、联系电话和家庭住址等)。同时,应用程序还必须保证USER表中的每一条记录在USERDOC表中都有相应的记录。

方法一
利用ASP内置ADO组件中的Connection对象可以实现对数据库操作的事务性处理。Connection对象的部分方法如下:
●Connection.BeginTrans方法:启动一个事务;
●Connection.CommitTrans方法:完成/提交一个事务;
●Connection.RollBackTrans方法:撤消/放弃一个事务。
//启动一个事务操作
<% Conn.BeginTrans % 
<% sqlText="Insert into USER(userName,userPasswd) values('" %
<% sqlText=sqlText & request("usrName") & "','"&request("usrPasswd")&"') " %
<% conn.execute(sqlText) %
<% if conn.Errors.Count0 then % 
<% conn.Errors.Clear %
//如果插入数据操作失败,则事务向前回滚
<% conn.RollBackTrans % 
<% response.Redirct RegisterFail.html %
<% end if %
<% sqlText="Insert into USERDOC(userName,Age,Sex,PhoneNumber,Address) "%
<% sqlText=sqlText & "values('"& request ("usrName") & "', " & request("Age") %
<% sqlText=sqlText & ",'" & request ("PhoneNum") & "','" %
<% sqlText=sqlText & request("Address") & "') " %
//执行事务单元中的第二条插入语句
<% conn.execute(sqlText) % 
<% if conn.Errors.Count0 then %
<% conn.Errors.Clear %
//如果操作失败,则事务向前回滚
<% conn.RollBackTrans % 
<% response.Redirct RegisterFail.html %
<% end if %
//如果整个事务操作执行正确,则提交事务
<% Conn.CommitTrans % 
//转向注册成功处理页面
<% response.Redirct RegisterOk.html % 


方法二
可以利用数据库系统内部的事务处理机制,通过在数据库服务器中编写包含事务的存储过程,完成对数据操作的事务处理。同时,利用ADO组件调用存储过程,还可以根据存储过程的返回代码判断事务处理是否执行成功。

在数据库系统中,每一条SQL语句都是一个事务。因此可以保证每条语句要么完成,要么退回到开始之处。但是如果希望一组SQL语句的操作要么全部完成,要么全部无效,就需要利用数据库的事务处理机制来实现。

在数据库中生成存储过程的主要代码如下:
Create proc RegisterUser (@usrName varchar(30), @usrPasswd varchar(30),@age int, @PhoneNum varchar(20), @Address varchar(50) ) as begin
//显示定义并开始一个事务
begin tran 
insert into USER(userName,userPasswd) values(@usrName,@usrPasswd)
if @@error<0
begin
//操作失败,则事务回滚
rollback tran 
//返回存储过程,并设置返回码为事务操作失败
return -1 
end
insert into USERDOC(userName,age,sex,PhoneNumber,Address) 
values(@Usrname,@age,@PhoneNum,@Address)
if @@error<0
begin
//操作失败,则事务回滚
rollback tran 
return -1
end
//如果操作

展开更多 50%)
分享

猜你喜欢

利用ASP实现事务处理的方法

ASP
利用ASP实现事务处理的方法

asp事务处理

ASP
asp事务处理

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Java中数据库事务处理的实现

编程语言 网络编程
Java中数据库事务处理的实现

Oracle 9i 事务处理

编程语言 网络编程
Oracle 9i 事务处理

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

深入Android SQLite 事务处理详解

编程语言 网络编程
深入Android SQLite 事务处理详解

[JAVA100例]059、事务处理

编程语言 网络编程
[JAVA100例]059、事务处理

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

惠普网络存储应用解决方案

惠普网络存储应用解决方案

基于ASP的站内多值搜索

基于ASP的站内多值搜索
下拉加载更多内容 ↓