要擴大HackedByChinese的建議,請考慮以下事項。你有一個主要的協調方法來處理創建連接,打開它,設置事務,然後調用執行不同類型工作(查詢)的worker方法。
public static void UpdateMyObject(string connection, object myobject)
{
try
{
using (SqlConnection con = new SqlConnection(connection))
{
con.Open();
using (SqlTransaction trans = con.BeginTransaction())
{
WorkingMethod1(con, myobject);
WorkingMethod2(con, myobject);
WorkingMethod3(con, myobject);
trans.Commit();
}
con.Close();
}
}
catch (Exception ex)
{
MessageBox.Show("SOMETHING BAD HAPPENED!!!!!!! {0}", ex.Message);
}
}
private static void WorkingMethod1(SqlConnection con, object myobject)
{
// Do something here against the database
}
private static void WorkingMethod2(SqlConnection con, object myobject)
{
// Do something here against the database
}
private static void WorkingMethod3(SqlConnection con, object myobject)
{
// Do something here against the database
}
首先,您不應該忘記關閉連接(甚至更好地在使用語句中包裝連接)。連接是非託管資源,直到他們明確關閉爲止。連接永遠不會再開放,因此在應用程序的整個生命週期中使用單個連接是一個非常糟糕的主意。 – Jay
是的,我知道最後的問題。因此,我必須做的是,在單個查詢或後續查詢組中進行一致的「操作」/「操作」(例如,帶有一些INSERT的循環)中的所有數據庫活動並在打開之前打開並關閉這些操作後的連接? – Cranio