.net 访问mysql链接池_c# – .NET SqlConnection类,连接池和重新连接逻辑
我們有一些客戶端代碼,它使用.NET中的SqlConnection類與SQLServer數據庫通信.它會間歇性地失敗并出現此錯誤:
“ExecuteReader需要一個開放且可用的連接.連接的當前狀態為Closed”
“臨時”解決方案是重新啟動過程,之后一切正常 – 但是,這顯然不能令人滿意.
代碼保留了SqlConnection實例的緩存,每個數據庫一個.
我們想重新編寫代碼,但在此之前,我需要了解一些事情:
我的第一個問題是:重復連接和斷開SqlConnection對象是否效率低下,或者底層庫是否代表我們執行連接池?
// Is this bad/inefficient?
for(many-times)
{
using(SQLConnection conn = new SQLConnection(connectionString))
{
// do stuff with conn
}
}
因為我們的代碼沒有執行上述操作,所以問題的可能原因似乎是在連接的“生命周期”期間底層SQLServer數據庫發生了某些事情,導致連接被關閉…
如果事實證明“緩存”SqlConnection對象是值得的,那么處理所有可以簡單地通過“重新連接”到數據庫來解決的錯誤的建議方法是什么.我在談論的場景如下:
>數據庫脫機并重新聯機,但客戶端進程在發生這種情況時沒有打開的事務
>數據庫“斷開連接”,然后“重新連接”
我注意到SqlConnection上有一個“State”屬性…是否有適當的方法來查詢?
最后,我有一個測試SQLServer實例設置了完全訪問權限:我怎樣才能再現確切的錯誤“ExecuteReader需要一個開放的可用連接.連接的當前狀態是關閉的”
總結
以上是生活随笔為你收集整理的.net 访问mysql链接池_c# – .NET SqlConnection类,连接池和重新连接逻辑的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java逆数组如何print_Java
- 下一篇: java如何爬取304_HTTP 304