• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP > 利用ASP实现事务处理的方法

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

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了asp防止sql注入方法,asp页面布局的方法,js调用asp.net方法,js调用asp方法,asp实现文件下载等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
 利用ASP实现事务处理的方法     选择自 AppleBBS 的 Blog  
关键字   利用ASP实现事务处理的方法 
出处    

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

实际上,在默认方式下对数据库的每一次操作都是隐含的事务处理。本文以一个典型的用户注册程序为例,介绍三种利用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)) 

当用户请求注册时,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.Count>0 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.Count>0 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 
//如果操作执行正确,则提交事务 
commit tran  
return 0 
end 
在ASP脚本中调用数据库存储过程的主要代码如下: 
<% Set Comm=server.CreateObject 
("ADODB.Command") %> 
<% Set Comm.ActiveConnection=conn %> 
<% Comm.CommandType=adCmdStoredProc %> 
<% Comm.CommandText="RegisterUser" %> 
//创建存储过程返回参数对象 
<% Set RetCode=Comm.CreateParameter 
("RetCode",adInteger,adParamReturnValue) %>  
//创建存储过程输入参数对象 
<% Set usrName=Comm.CreateParameter ("usrName",adVarchar,adParamInput,30) %>  
<% Set usrPwd=Comm.CreateParameter 
("usrPasswd",adVarchar,adParamInput,30) %> 
<% Set age=Comm.CreateParameter("age",adInteger,adParamInput) %> 
<% Set PhoneNum=Comm.CreateParameter 
("PhoneNum",adVarchar,adParamInput, 20) %> 
<% Set Address=Comm.CreateParameter("Address",adVarchar,adParamInput,50) %> 
<% Comm.Parameters.Append usrName %> 
<% Comm.Parameters.Append usrPwd %> 
<% Comm.Parameters.Append age %> 
<% Comm.Parameters.Append PhoneNum %> 
<% Comm.Parameters.Append Address %> 
<% Comm.Parameters("usrName")=request("usrName") %> 
<% Comm.Parameters("usrPasswd")=request("usrPasswd") %> 
<% Comm.Parameters("age")=request("age") %> 
<% Comm.Parameters("PhoneNum")=request("PhoneNum") %> 
<% Comm.Parameters("Address")=request("Address") %> 
<% Comm.Execute %> 
<% RetValue=Cint(Comm("RetCode")) %> 
//根据数据库存储过程返回代码判断注册是否成功 
<% if RetValue< 0 then %>  
<% response.Redirect RegisterFail.html %> 
<% else %> 
<% response.Redirect RegisterOk.html %> 
<% end if %> 


方法三 
利用MTS(Microsoft Transaction Server)组件的事务处理机制实现事务处理时,需要特别注意的是,这种机制下的事务不能跨越多个ASP页,如果一个事务处理需要来自多个组件的对象,则须将对这些对象的操作组合在一个ASP页中。 

首先需要在页首添加指令@TRANSACTION,将一个ASP页面声明为事务性。

@TRANSACTION指令必须在一页中的第一行,否则将产生错误。当页面中ASP脚本处理结束时,当前事务即告结束。 
<%@ TRANSACTION=Req
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • ASP固定比例裁剪缩略图的方法
  • ASP中实现执行定时任务的方法
  • asp清空application的方法
  • 一些Asp技巧和实用解决方法
  • ASP下的两个防止SQL注入式攻击的Function
  • 利用ASP实现事务处理的方法

相关文章

  • 2017-05-11ASP 程序实现自动升级功能
  • 2017-05-11ASP中生成文本文件的两种方式
  • 2017-05-11asp实现带刷新功能的验证码代码
  • 2017-05-11asp中获取日期为星期几的方法
  • 2017-05-11使用 Osql 工具管理 SQL Server 桌面引擎 (MSDE 2000)应用介绍
  • 2017-05-11asp下去除数组中重复项的方法
  • 2017-05-11推荐ASP中VBScript常用函数
  • 2017-05-11动态CSS,换肤技术
  • 2017-05-11ASP 时间函数及如何获取服务器时间的写法
  • 2017-05-11一个改进的ASP生成SQL命令字符串类的代码[已测]

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 浏览文件夹下面所有图片
    • asp 一些支付接口
    • asp中使用MSXML2.ServerXMLHTTP实现异步请求例子
    • ASP常用函数:Trace()
    • 如何使用FSO搜索硬盘文件
    • ASP编程入门进阶(十八):FSO组件之文件操作(中)
    • 信息发布中的判断过期和有效期的东西
    • ASP checkbox复选框是否被选中的代码(结合数据库)
    • asp 动态生成rss(不成生xml文件)代码
    • asp下利用fso实现文件夹或文件移动改名等操作函数

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有