2016-08-19 83 views
2

我剛寫了這個。這是一種處理開放式sql連接的好方法嗎?我的老師告訴我這是最好的做法,但我仍然想在這裏問一下我的確信。這是一種處理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; 
} 

回答

4

並非如此。在它不會被置於一個異常的情況。使用using爲了這樣做。

喜歡的東西:

using(var manager = ClsDatabaseManager.InitializeDbManager(Constants.Databases.POSSystem); Manager.Open()) 
{ 
    //Your code 
} 

只能在實現IDisposable確保即使有異常或塊中的回報Dispose()方法將被調用對象使用的using。它的實現類似於:

public void Using<T>(T input, Action<T> predicate) where T : IDisposable 
{ 
    try 
    { 
     predicate(input); 
    } 
    finally 
    { 
     input.Dispose(); 
    } 
} 
+0

好吧,所以我可以這樣做,就像把終端塊放置處置? – Cuckoo

+1

@Cuckoo - 是的,但更好的做法是使用 –

+0

ok和incase的Reader.close(),我應該離開它,或者也將它移動到最後? – Cuckoo

1

應儘早處理打開的SQL連接。

在你的代碼中,更好的方法是將SQL連接放置在finally塊中。這樣,即使在出現異常的情況下,連接將被安全處置

try 
{ 
    //Code   
} 
catch (Exception ex) 
{ 
    //Handle exception 
} 
finally{ 
    //Dispose the Connection 
    Manager.Dispose(); 
} 
+0

真:)這就是'using'關鍵字確保的:) –

+0

@GiladGreen好的。直到現在我還不知道使用的底層實現。感謝那。 – DVJex

+0

這就是爲什麼我們都在這麼:)學習 –

相關問題