asp事务处理的另外一个方法

时间:2010-05-27 12:18:00 

<%
'asp事务处理。
'测试数据库为sql server,服务器为本机,数据库名为test,表名为a,两个字段id(int)主键标识,num(int)
set conn=server.CreateObject("adodb.connection")
strConn="provider=sqloledb.1;persist security info=false;uid=sa;pwd=sa;Initial Catalog=test;Data Source=."
conn.Open strConn
'以上代码建立数据库连接
conn.BeginTrans '事务开始
strSql1="update a set num=1000 where id=24" '第一个sql语句为update。(语法正确)
strSql2="insert into a(num) values('a')" '第二个sql语句为错误的sql语句
strSql3="insert into a(num) values(33333)" '第三个sql语句为正确的sql语句

call conn.execute(strSql1)  
call conn.execute(strSql2)  
call conn.execute(strSql3)  


if conn.Errors.Count=0 then  
      conn.CommitTrans  '如果没有conn错误,则执行事务提交
else
      conn.RollbackTrans '否则回滚
end if
%>
以上代码经调试,可以正常的进行事务处理。但是有时候,我们并不想将编译错误显示给用户。
则我们需要在conn.BeginTrans后面加上On error resume next
但是因为用到了On error resume next。conn.Errors.Count只能获得最后一个数据库操作的conn返回的结果 。上面的三个sql语句,因为最后一个sql语句是正确的,则此事务处理就无效了。那我们需要对出错处理作出相对应的修改。
if conn.Errors.Count=0 then应该改为if err.number=0 then
这样,我们可以在数据库回滚后同时做出其他相对应的操作或者提示。修改后的代码如下:
<%
set conn=server.CreateObject("adodb.connection")
strConn="provider=sqloledb.1;persist security info=false;uid=sa;pwd=sa;Initial Catalog=test;Data Source=."
conn.Open strConn
'以上代码建立数据库连接
conn.BeginTrans '事务开始
on error resume next '增加的代码
strSql1="update a set num=1000 where id=24" '第一个sql语句为update。(语法正确)
strSql2="insert into a(num) values('a')" '第二个sql语句为错误的sql语句
strSql3="insert into a(num) values(33333)" '第三个sql语句为正确的sql语句


call conn.execute(strSql1)  
call conn.execute(strSql2)  
call conn.execute(strSql3)  


if err.number =0 then  
    conn.CommitTrans  '如果没有conn错误,则执行事务提交
else
    conn.RollbackTrans '否则回滚
    '回滚后的其他操作
    strerr=err.Description
    Response.Write "数据库错误!错误日志:<font color=red>"&strerr &"</font>"
    Response.End
end if


%>


标签:事务处理,asp
0
投稿

猜你喜欢

  • mysql limit查询优化分析

    2023-11-16 00:51:04
  • 实例介绍Python中整型

    2021-03-09 08:00:33
  • ASP实现语音分时问候

    2007-10-02 12:12:00
  • python实现的读取网页并分词功能示例

    2022-05-08 07:06:38
  • oracle数据库ORA-01196错误解决办法分享

    2024-01-15 10:07:10
  • 分享下GET和POST的真正区别

    2023-10-19 23:23:09
  • Mysql日期和时间函数大全

    2011-03-08 09:52:00
  • 关于NumPy中asarray的用法及说明

    2023-01-07 17:55:12
  • Python实现冒泡排序算法的示例解析

    2021-03-17 10:34:10
  • Python比较两个日期的两种方法详解

    2023-12-25 03:52:17
  • Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)

    2023-01-20 02:42:35
  • Python免费验证码识别之ddddocr识别OCR自动库实现

    2023-02-25 12:28:31
  • MySQL异常处理浅析

    2024-01-17 21:47:44
  • pygame游戏之旅 添加icon和bgm音效的方法

    2022-02-10 19:25:31
  • 使用numpy对数组求平均时如何忽略nan值

    2023-09-19 20:37:24
  • Python数据获取实现图片数据提取

    2022-08-15 03:37:30
  • Python八皇后问题解答过程详解

    2021-09-09 18:06:17
  • git使用.gitignore设置不生效或不起作用问题的解决方法

    2021-06-09 17:17:07
  • GraphQL在Django中的使用教程

    2023-02-20 18:11:31
  • python调用私有属性的方法总结

    2023-09-06 03:16:18
  • asp之家 网络编程 m.aspxhome.com