繁体   English   中英

使用SqlTransaction时关闭SqlConnection

[英]Close SqlConnection while using SqlTransaction

我将SqlTransaction用于一系列插入命令-

connection.Open();
transaction = connection.BeginTransaction();
command.Transaction = transaction;
command.CommandText="Insert into ....";
connection.Close();

//Doing some other task and then again open connection.
connection.Open();
command.CommandText="Insert into ....";
connection.Close(); 

最后,

transaction.Commit();
if (transaction != null) { transaction.Rollback(); }

我的问题是,可以在使用事务时关闭该连接吗? 我必须需要回滚功能。

有什么帮助吗?

您可以在事务完成后关闭连接。 像下面这样

class Transaction
 {
     public Transaction()
     {
        string FirstQuery = "INSERT INTO Table1 VALUES('Vineeth',24)";
        string SecondQuery = "INSERT INTO Table2 VALUES('HisAddress')";
        int ErrorVar = 0;
        using (SqlConnection con = new SqlConnection("your connection string"))
        {
            try
            {
                SqlCommand ObjCommand = new SqlCommand(FirstQuery, con);
                SqlTransaction trans;
                con.Open();
                trans = con.BeginTransaction();
                ObjCommand.Transaction = trans;
                //Executing first query
                //What ever operation on your database do here

                ObjCommand.ExecuteNonQuery();  //Exected first query
                ObjCommand.CommandText = SecondQuery;
                ObjCommand.ExecuteNonQuery();  //Exected first query
               //Everything gone fine. So commiting
               ObjCommand.Transaction.Commit();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error but we are rollbacking");
                ObjCommand.Transaction.Rollback();
            }
            con.Close();
        }
    }
}

或者您可以使用TransactionScope

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM