• SqlCommand对象-Transaction事务的使用


                using (SqlConnection connection = new SqlConnection(connStr))
                {
                    SqlCommand sqlcmd = new SqlCommand();
                    sqlcmd.Connection = connection;
                    connection.Open();
                    SqlTransaction tran = connection.BeginTransaction();
                    sqlcmd.Transaction = tran;
                    //connection.BeginTransaction();
                    //sqlcmd.Connection.BeginTransaction();
                    try
                    {
                       sqlcmd.CommandText = " INSERT INTO tLabPrint (单据编号,单据时间) values('1','2017-02-25') ";
                       sqlcmd.ExecuteNonQuery();
                        tran.Commit();
                        //sqlcmd.Transaction.Commit();
                    }
                    catch (Exception ex)
                    {
                        tran.Rollback();
                        throw new Exception("error:事务执行失败 " + ex.Message);
                    }
                }
    SqlCommand对象-Transaction事务的使用

    事务作为一个单元被提交和回滚,可以与SQL语句进行组合使用,例如:对于银行事务,可以要从一个帐号取钱,存到另一个帐号中,然后在一个单元中提交这些改变,如果发生问题,则同时回滚这些改变。通过设置SqlCommand对象的事务属性Transaction与SqlTransaction对象绑定来实现事务处理。

    使用步骤如下:

    1、生成SqlTransaction对象,并用SqlConnection对象的BeginTransaction方法开始事务。

    2、生成保存SQL语句的SqlCommand对象。

    3、 将SqlCommand对象的Transaction属性设置为第1步生成的SqlTransaction对象。

    4、将SqlCommand对象的CommandText属性设置为第一个INSERT语句。

    5、用SqlCommand对象的ExecuteNonQuery()方法执行第一个INSERT语句。此方法不返回结果集。

    6、将SqlCommand对象的CommandText属性设置为第二个INSERT语句。

    7、用SqlCommand对象的ExecuteNonQuery()方法执行第二个INSERT语句。此方法不返回结果集。

    8、用SqlTransaction对象的Commit()方法提交事务,使INSERT语句增加的两行在数据库中保存。

    说明:如果要撤消构成事务的SQL语句,则可以用Rollback()方法而不是Commit()方法。默认情况下,事务撤消一定要用Commit()或Rollback()方法明确事务要提交还是回滚。

    下面代码使用ExecuteNonQuery执行INSERT语句并用SqlTransaction对象进行数据提交

    con.Open();//在调用方法前打开数据库连接

    SqlCommand comm=new con.CreateCommand();//创建和声明Command对象

    SqlTransaction tran=con.BeginTransaction();//在生成SqlTransaction对象前必须打开数据库连接

    comm.Transaction=tran;//设置属性为SqlTransaction对象

    comm.CommandText= “insert into dept(dept) values(‘信息组’)”;//设置
    SqlCommand对象要执行的SQL语句

    comm.ExecuteNonQuery();//执行SQL语句

    comm.CommandText= “insert into dept(dept) values(‘生产物流组’)”; //设置SqlCommand对象要执行的SQL语句

    comm.ExecuteNonQuery();//执行SQL语句

    tran.Commit();提交INSERT语句对数据库中表的改变。如果要撤消改变,使用Rollback()

    con.Close();//关闭数据库连接

  • 相关阅读:
    python03-if
    python03
    基础知识梳理
    开篇话
    托管代码---> CLR --> 自宿主
    反射定义及基础案例
    c# 中委托的发展
    委托代码案例
    委托(实例)
    字节(Byte) 与 位(bit)
  • 原文地址:https://www.cnblogs.com/lhyqzx/p/6440959.html
Copyright © 2020-2023  润新知