很多初學者朋友在做項目時遇到過這樣的問題,那就是在本地調試運行的程式正常,放到伺服器上也是正常的,但是如果有了一些併發之後,就會發現頁面會出現打不開的現像,其實大多數時候是因為Ado.net鏈接沒有處理完善。當然對於老鳥來說這種情況是不會發生的。 其實避免出現這種情況和提高Connection對象的 ...
很多初學者朋友在做項目時遇到過這樣的問題,那就是在本地調試運行的程式正常,放到伺服器上也是正常的,但是如果有了一些併發之後,就會發現頁面會出現打不開的現像,其實大多數時候是因為Ado.net鏈接沒有處理完善。當然對於老鳥來說這種情況是不會發生的。
其實避免出現這種情況和提高Connection對象的使用性能的方式很簡單,我們這裡列出兩種方式供初學者或遇到過這種問題的朋友選擇:
1.使用try-catch-finally語句塊:
SqlConnection conn = new SqlConnection("鏈接字元串");
try
{
conn.Open();//打開資料庫鏈接
//添寫針對鏈接對象所做的一些操作
}
catch (SqlException err)
{
//這裡可以將錯誤信息寫入日誌
}
finally
{
conn.Close();//在完成conn對象的操作後需要關閉鏈接
}
這麼做的原因是,雖然.NET框架中有垃圾回收機制,但是我們為了能確保資源的有效利用,所以需要儘早的釋放到資源,以保證其能被有效的利用起來。同時,我們也不建議大家直接在操作完成後使用conn.Close()方法,因為這樣的話,如果在本次操作出現錯誤後,conn將不再繼續往下執行,那麼意味著鏈接就不會關閉,其結果是你第二次操作時,將來提示鏈接沒有被關閉。
2.也可使用using語句塊:
using (SqlConnection conn = new SqlConnection("鏈接字元串"))
{
conn.Open();
//添寫針對鏈接對象所做的一些操作
}
有興趣的朋友,可以去研究一下using關健字在C#中的各種用法,那麼在這裡using所起到的作用是不論如何退出語句塊,都會釋放到conn對象的資源。
當然,我的建議是大家可以結合起來使用,因為using對象可以確保資源的釋放,而try語句塊可以讓我們抓取異常,並且寫到Log中。