2011-08-31 100 views
0

我有一個使用SQL Server數據庫的ASP.Net應用程序。我也使用ODBC來建立連接(見下文)。然後我用查詢加載控件(其中很多)。ASP.NET應用程序的數據庫連接(SQL Server)

這是正確的方法嗎?

另外,我需要以編程方式完成大部分,而不是在設計時。

Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs) 
    ' Fires when the session is started 

    Session("ConnString") = "DRIVER={SQL Server};SERVER=myserver;Trusted_Connection=True;DATABASE=mydatabase" 
    Session("MyConnection") = New Odbc.OdbcConnection(Session("ConnString")) 

End Sub 
+0

您不能(也不應該)在會話中存儲OdbcConnection。這是一個可隨意使用的對象,需要在使用後立即釋放資源,否則最終會導致資源泄漏和性能問題。 – TheCodeKing

+0

其實你可以通過使用靜態類,但我不建議。那是我的第一個項目之一。 – TroyS

+0

你不能在會話中存儲也許不完全準確,在你使用InProc時你可以避開它,但是你的應用程序會在負載下死掉。沒有保持靜態引用的原因是一樣的。餿主意。最佳做法是儘快處理一次性物品。 – TheCodeKing

回答

2

我不認爲節省連接對象會是非常好的做法(見下面爲什麼)

你就不能保存的ConnectionString在會議並重新創建的SQL Server連接Page_Load中?

Sql連接通常只能在您的請求生存期(最長)內生存,優先選擇較短。一旦你不需要它,你應該關閉一個sql連接。

在整個會話中保持一個打開是不好的做法。這會使連接池非常快地耗盡可用連接。

你可以請你解釋一下你的問題好一點嗎?

+0

我沒有打開Session_Start中的連接,只是創建了變量來保存它。但我想我明白你的意思是在頁面加載中聲明連接變量,如[Dim MyConnection As Odbc.OdbcConnection = CType(Session(「MyConnection」),Odbc.OdbcConnection)]。然後根據需要在頁面或控件事件中打開並關閉它。它是否正確? – TroyS

+0

這就是我所說的。只在Session中保存一個變量聲明沒有實際意義。創建一個可以擴展(繼承自)的基類並在那裏進行連接處理會更容易,因此您不會在每個頁面上都有重複的代碼。 –

相關問題