很多初學者朋友在做項目時遇到過這樣的問題,那就是在本地調試運行的程序正常,放到服務器上也是正常的,但是如果有了一些併發之後,就會發現頁面會出現打不開的現像,其實大多數時候是因爲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中。