C# SqlTransaction.Commit 引发异常,因为连接为空
本文关键字:因为 连接 异常 SqlTransaction Commit | 更新日期: 2023-09-27 18:34:02
我在使用 Sqltransaction 时遇到问题。这是代码
SqlConnection conn = new SqlConnection(connectionString);
// assume that at this point I add try/catch and the connection is successfully opened.
conn.Open();
SqlTransaction trans = conn.BeginTransaction(IsolationLevel.RepeatableRead);
//.........
// Here I do my action with database, change it, commit, call ExecuteNonQuery, //ExecuteScalar,etc...
// And after that long processing with this transaction, I don't know why trans.Connection //is null. and therefore when I call trans.commit(), an exception was raised?
trans.commit();
有人有任何线索吗?
我认为这可能是因为数据库服务器的内存由于连接过多而被占用。但我不确定。
我该如何解决这个问题?
利用使用
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
Console.WriteLine("ServerVersion: {0}", connection.ServerVersion);
Console.WriteLine("State: {0}", connection.State);
}
似乎是错别字
con.BeginTransaction(IsolationLevel.RepeatableRead)
应该是
conn.BeginTransaction(IsolationLevel.RepeatableRead)
使用 using
语句:
using (SqlConnection connection = new SqlConnection(connectionString))
{
//your code here
}
C# - 捕获事务连接后的 Sql事务为空 - 堆栈溢出捕获事务连接后的 Sql事务为空
埃丁说:遇到了类似的问题。就我而言,它发生在特定的 SqlException 中。大多数异常都会被捕获并处理得很好,但是每当我遇到转换错误(例如尝试将字符串转换为数字)时,它都会自动结束事务。
在我的解决方案中,如果发现基础连接为空,我会重建事务处理。但这是一项肮脏的工作。