设为首页收藏本站
查看: 111|回复: 0

[PHP] NET事务隐式事务

[复制链接]

论坛元老

Rank: 6Rank: 6

积分
34274
主题
17031
UID
1347
M币
67
贡献
17176

  • 发表于 2018-7-11 08:16:00 | 显示全部楼层 |阅读模式
    如需运行分布式事务,需启动 T-SQL : CreateTableTranTable ( IdINTIDENTITY(1,1)PRIMARYKEY, PriorityTINYINT-- 最大值 255 ) C# : stringsql1="INSERTINTOTranTableVALUES(1)";// 正常插入 stringsql2="INSERTINTOTranTableVALUES(256)";// 插入异常 ADO

      如需运行分布式事务,香港空间,美国服务器,需启动
    T-SQL:
    Create Table TranTable
    (
      Id INT IDENTITY(1,1) PRIMARY KEY,
      Priority TINYINT--最大值255
    )
      C#:
    string sql1 = "INSERT INTO TranTable VALUES(1)";//正常插入
    string sql2 = "INSERT INTO TranTable VALUES(256)";//插入异常
      
    ADO.NET事务
    using (SqlConnection cOnn= new SqlConnection(ConfigurationManager.ConnectionStrings["MySqlServer"].ConnectionString))
    {
    conn.Open();
    using (SqlTransaction tran = conn.BeginTransaction())
    {
    using (SqlCommand cmd = new SqlCommand())
    {
    cmd.COnnection= conn;
    cmd.CommandType = CommandType.Text;
    cmd.Transaction = tran;
    try
    {
    cmd.CommandText = sql1;
    cmd.ExecuteNonQuery();
    cmd.CommandText = sql2;
    cmd.ExecuteNonQuery();
    tran.Commit();
    Response.Write("Ok");
    }
    catch (SqlException ex)
    {
    tran.Rollback();
    Response.Write("Error:" + ex.Message);
    }
    }
    }
    conn.Close();
    }
      ADO.NET
      
    分布式隐式事务(TransactionScope)
    隐式事务不具有
    using (SqlConnection cOnn= new SqlConnection(ConfigurationManager.ConnectionStrings["MySqlServer"].ConnectionString))
    {
    using (TransactionScope ts = new TransactionScope())
    {
    conn.Open();
    using (SqlCommand cmd = new SqlCommand())
    {
    cmd.COnnection= conn;
    cmd.CommandType = CommandType.Text;
    try
    {
    cmd.CommandText = "insert into TranTable(Priority) values(1)";
    cmd.ExecuteNonQuery();
    cmd.CommandText = "insert into TranTable(Priority) values(256)";
    cmd.ExecuteNonQuery();
    ts.Complete();
    Response.Write("Ok");
    }
    catch (SqlException ex)
    {
    Response.Write("Error:" + ex.Message);
    }
    }
    }
    conn.Close();
    }
      TransactionScope没有和数据库直接关联,那是怎么实现用事务的方式执行语句的呢?
      如果我们在连接字符串里面加上
      
    分布式显示事务(CommittableTransaction)
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    在我站开通SVIP可同时获得17个站点VIP资源 立即登录 立即注册
    快速回复 返回顶部 返回列表