事务体会
发布日期:2021-07-17 20:20:27 浏览次数:4 分类:技术文章

本文共 1502 字,大约阅读时间需要 5 分钟。

1.事务在是依附在连接上的.

如果SqlCommand依附的连接上有事务,那么对必须给SqlCommand指定事务.不然出现异常:
异常详细信息: System.InvalidOperationException: 如果分配给命令的连接位于本地挂起事务中,ExecuteNonQuery 要求命令拥有事务。命令的 Transaction 属性尚未初始化。
代码:
 string connString = "Data Source=192.168.0.211;Initial Catalog=test1;User ID=dev_user;Password=dev_user";
            SqlConnection conn = new SqlConnection(connString);
            conn.Open();

            SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.Serializable);

            SqlCommand sqlcomm = new SqlCommand();

            sqlcomm.Connection = conn;
            //sqlcomm.Transaction = transaction;
            sqlcomm.CommandText = "insert into yg(yg_name,b_id) values('b',1)";
            sqlcomm.ExecuteNonQuery();
            transaction.Rollback();
            conn.Close();

2.事务的Rollback()操作其实是使用了与sql相反的操作,如insert的Rollback为delete.

意思就是在Rollback之前,sql已真实地去数据库进行了操作.

3.事务是引用类型,其它过程对其的操作会影响它.

protected void Button1_Click(object sender, EventArgs e)
        {
            string connString = "Data Source=192.168.0.211;Initial Catalog=test1;User ID=dev_user;Password=dev_user";
            SqlConnection conn = new SqlConnection(connString);
            conn.Open();

            SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.Serializable);

            SqlCommand sqlcomm = new SqlCommand();

            sqlcomm.Connection = conn;
            sqlcomm.Transaction = transaction;
            sqlcomm.CommandText = "insert into yg(yg_name,b_id) values('c',1)";
            sqlcomm.ExecuteNonQuery();
            //transaction.Rollback();
            myrollback(transaction);//事务是引用类型,其它过程对其的操作会影响它.
            conn.Close();
            Label1.Text = "ok";
        }

        void myrollback(SqlTransaction transaction)

        {
            transaction.Rollback();//insert无效
        }

作者:ikmb@163.com

转载地址:https://blog.csdn.net/ikmb/article/details/3429527 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:asp.net 绑定数据的处理小例
下一篇:try catch finally 终极解说

发表评论

最新留言

不错!
[***.144.177.141]2024年03月30日 01时52分08秒