![](/img/trans.png)
[英]How to force a SqlConnection to physically close, while using connection pooling?
[英]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.