zoukankan      html  css  js  c++  java
  • ASP.Net中的事务处理的几种方法

    1.在Sql Server数据库存储过程中
    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

    2.在C#代码中利用Connection对象的BeginTransaction方法创建事务
                try
                {
                    SqlConnection con = new SqlConnection();
                    SqlTransaction tran = con.BeginTransaction();
                    string cmdText1 = "delete ...";
                    SqlCommand cmd1 = new SqlCommand(cmd,con);
                    cmd1.ExecuteNonQuery();
                    string cmdText = "insert ...";
                    SqlCommand cmd2 = new SqlCommand(cmd2, con);
                    cmd2.ExecuteNonQuery();
                    tran.Commit();
                }
                catch (Exception ex)
                {
                    tran.Rollback();
                    throw ex;
                }
    3.在企业库中利用Database对象的ExcuteNonQuery方法的Transaction对象参数
      //使用事务增加两个表的数据
                using (DbConnection dbCon = db.CreateConnection())
                {
                    dbCon.Open();
                    DbTransaction dbTran = dbCon.BeginTransaction();
                    try
                    {
                       
                        //先增加会议
                        db.ExecuteNonQuery(dbTran,"AddMeeting", -1, Subject,Sponsor,MeetingRoom,Date,StartTime,EndTime,
                                         Manager,Actor,Agenda,IsApproved,IsPublished);

                        string[] attValue = strAtt.Split(';');
                        int rowsCount=0;
                        for (int i = 0; i < attValue.Length; i++)
                        {
                            //构造附件数据
                            string[] att = attValue[i].Split(',');
                            string FileName = att[0];
                            string FileExt = att[1];
                            string FilePath = att[2].Replace("/", "\\");
                            string Note = att[3];
                            //附加用途1表示会议资料类型
                            int Usage = 1;
                            long FileSize = Convert.ToInt64(att[4]);
                            DateTime UpTime = Convert.ToDateTime(att[5]);
                            //在增加附件
                            rowsCount = db.ExecuteNonQuery(dbTran, "AddAttachment", -1, RecID, FileName, FileExt, FilePath, Note, Usage, FileSize, UpTime);
                        }
                        dbTran.Commit();
                    }
                    catch (Exception ex)
                    {
                        dbTran.Rollback();
                    }
                   finally
                    {
                        dbCon.Close();
                    }

  • 相关阅读:
    day04
    day02
    day01
    ORM + 单例
    ORM框架SQLAlchemy
    存储引擎 , 索引 ,慢日志查询 , explain查询优化, 权限管理
    事务,视图 ,函数,存储过程,触发器
    pymysql 操作 , sql注入
    外键,高级操作
    mysql 基本操作
  • 原文地址:https://www.cnblogs.com/newwind521/p/610740.html
Copyright © 2011-2022 走看看