这是处理 sql 连接的好方法吗?
Is this a good way to dispose sql connection?
我刚刚写了这个。这是处理打开的 sql 连接的好方法吗?我的前辈告诉我这是最好的做法,但我还是想在这里问问自己。
public bool SaveBulkpayment(List<ClsCombinePayment> list)
{
bool Result = false;
ClsDatabaseManager Manager = ClsDatabaseManager.InitializeDbManager(Constants.Databases.POSSystem);
Manager.Open();
Manager.CreateParameters(10);
try
{
foreach (var item in list)
{
Manager.AddParameters(0, "@Batch", item.Batch);
Manager.AddParameters(1, "@TransactionDateTime", TransactionDateTime);
Manager.AddParameters(2, "@BatchNo", BatchNo);
Manager.AddParameters(3, "@Salary", item.Salary);
Manager.AddParameters(4, "@EDRRecord_ID", item.EDRRecord_ID);
Manager.AddParameters(5, "@User_ID", item.User_ID);
Manager.AddParameters(6, "@Branch_ID", item.Branch_ID);
Manager.AddParameters(7, "@PafFile_ID", item.PAFFile_ID);
Manager.AddParameters(8, "@PinCode", item.PinCode);
Manager.AddParameters(9, "@ifDiff", item.ifDiff);
Result = Manager.ExecuteNonQuery("usp_SaveBulkPayment").ToBool();
}
Manager.Dispose();
}
catch (Exception ex)
{
throw ex;
}
return Result;
}
打开的 SQL 连接应尽早处理。
在您的代码中,更好的方法是在 finally 块中处理 SQL 连接。这样即使出现异常,连接也会被安全处理
try
{
//Code
}
catch (Exception ex)
{
//Handle exception
}
finally{
//Dispose the Connection
Manager.Dispose();
}
不是真的..在异常的情况下它不会被处理。为此,请使用 using
。
类似于:
using(var manager = ClsDatabaseManager.InitializeDbManager(Constants.Databases.POSSystem); Manager.Open())
{
//Your code
}
只能在实现IDisposable
的对象上使用的using
确保即使出现异常或return也会调用Dispose()
方法] 在块中。它的实现类似于:
public void Using<T>( T input, Action<T> predicate) where T : IDisposable
{
try
{
predicate(input);
}
finally
{
input.Dispose();
}
}
我刚刚写了这个。这是处理打开的 sql 连接的好方法吗?我的前辈告诉我这是最好的做法,但我还是想在这里问问自己。
public bool SaveBulkpayment(List<ClsCombinePayment> list)
{
bool Result = false;
ClsDatabaseManager Manager = ClsDatabaseManager.InitializeDbManager(Constants.Databases.POSSystem);
Manager.Open();
Manager.CreateParameters(10);
try
{
foreach (var item in list)
{
Manager.AddParameters(0, "@Batch", item.Batch);
Manager.AddParameters(1, "@TransactionDateTime", TransactionDateTime);
Manager.AddParameters(2, "@BatchNo", BatchNo);
Manager.AddParameters(3, "@Salary", item.Salary);
Manager.AddParameters(4, "@EDRRecord_ID", item.EDRRecord_ID);
Manager.AddParameters(5, "@User_ID", item.User_ID);
Manager.AddParameters(6, "@Branch_ID", item.Branch_ID);
Manager.AddParameters(7, "@PafFile_ID", item.PAFFile_ID);
Manager.AddParameters(8, "@PinCode", item.PinCode);
Manager.AddParameters(9, "@ifDiff", item.ifDiff);
Result = Manager.ExecuteNonQuery("usp_SaveBulkPayment").ToBool();
}
Manager.Dispose();
}
catch (Exception ex)
{
throw ex;
}
return Result;
}
打开的 SQL 连接应尽早处理。
在您的代码中,更好的方法是在 finally 块中处理 SQL 连接。这样即使出现异常,连接也会被安全处理
try
{
//Code
}
catch (Exception ex)
{
//Handle exception
}
finally{
//Dispose the Connection
Manager.Dispose();
}
不是真的..在异常的情况下它不会被处理。为此,请使用 using
。
类似于:
using(var manager = ClsDatabaseManager.InitializeDbManager(Constants.Databases.POSSystem); Manager.Open())
{
//Your code
}
只能在实现IDisposable
的对象上使用的using
确保即使出现异常或return也会调用Dispose()
方法] 在块中。它的实现类似于:
public void Using<T>( T input, Action<T> predicate) where T : IDisposable
{
try
{
predicate(input);
}
finally
{
input.Dispose();
}
}