亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

解析為何要關閉數據庫連接,可不可以不關閉的問題詳解

2020-01-26 16:14:54
字體:
來源:轉載
供稿:網友

首先要說明的是連接數是有限制的:

代碼如下:

復制代碼 代碼如下:

for (int i = 0; i < 10000; i++)
{
    SqlConnection conn = new SqlConnection(@"Data Source=./SQLEXPRESS;
                AttachDbFilename=""E:/DB/NORTHWND.mdf"";
                Integrated Security=True;Connect Timeout=30;User Instance=True");

    conn.Open();
    Console.WriteLine("打開了{0}個連接", i);
}


運行結果如下:

image

過一會就會提示打開連接超時了:

clip_image002

 

可以看到數據庫連接時有限制的,如果連接不關閉,而且使用的人比較多,那么系統很快就down掉了。

 

但是有時候由于某些原因應用程序可能只是幾個人使用,所以就有人設計了:

在應用程序啟動的時候打開數據庫連接,在應用程序關閉的時候關閉數據庫連接

那么使用這種方式有什么問題呢?

首先假設有一張表Nums,表定義如下:

image

Main代碼如下:

復制代碼 代碼如下:

SqlConnection conn = new SqlConnection(@"Data Source=./SQLEXPRESS;
                    AttachDbFilename=""E:/DB/NORTHWND.mdf"";
                    Integrated Security=True;Connect Timeout=30;User Instance=True");
conn.Open();
Parallel.For(1, 9999, (id) =>
{
    ExecuteCommand(conn, id);
});

就是從1到9999開始執行ExecuteCommand

ExecuteCommand代碼如下:

復制代碼 代碼如下:

private static void ExecuteCommand(SqlConnection conn, int id)
{
    Console.WriteLine("正在執行." + id);

    Thread.Sleep(100);

    SqlCommand cmd = new SqlCommand(
       string.Format("Insert into Nums values('{0}') ", id), conn);

    cmd.ExecuteNonQuery();
}


運行:

clip_image002[5]

可以看到ExecuteNonQuery方法拋出了異常,原因是連接處于關閉狀態。

 

可是我們的連接一直都是open著的啊,并沒有調用close,dispose之類的方法啊

于是在ExecuteCommand前面增加判斷條件:

if (conn.State != System.Data.ConnectionState.Open)
    conn.Open();再次運行:

clip_image002[7]

可以看到還是會出現連接已關閉的問題。你知道什么原因嗎?

這里是由于多線程環境引起的。所以需要加鎖。

復制代碼 代碼如下:

private static object syncObj = new object();
private static void ExecuteCommand(SqlConnection conn, int id)
{
    lock (syncObj)
    {
        if (conn.State != System.Data.ConnectionState.Open)
            conn.Open();
        Console.WriteLine("正在執行.." + id);
        Thread.Sleep(100);
        SqlCommand cmd = new SqlCommand(
           string.Format("Insert into Nums values('{0}') ", id), conn);
        cmd.ExecuteNonQuery();
    }
}

再次運行:可以發現基本沒問題了.

修改Parallel.For的最大值上限,要測試下是否可以長期執行了。

復制代碼 代碼如下:

Parallel.For(1, Int32.MaxValue, (id) =>
            {
                ExecuteCommand(conn, id);
            });

一天測試下來,沒出現任何問題。

結論:對于某些只有幾個人使用的應用程序,可以不關閉數據庫連接,但是在寫代碼的時候最好要加上連接是否打開的判斷。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日产日韩在线亚洲欧美| 欧亚精品在线观看| 蜜臀久久99精品久久久无需会员| 国产亚洲欧美日韩美女| 综合网日日天干夜夜久久| 成人www视频在线观看| 亚洲国产另类 国产精品国产免费| 国产成人高潮免费观看精品| www亚洲欧美| www.亚洲一二| 57pao精品| 久久久国产影院| 国产亚洲精品日韩| 国产精品视频中文字幕91| 91精品国产网站| 亚洲第一色在线| 亚洲国产成人在线视频| 亚洲欧美三级伦理| 亚洲人成在线免费观看| 4438全国成人免费| 欧美日韩成人网| 亚洲最新av网址| 色偷偷av一区二区三区| 91国产美女在线观看| 国产在线一区二区三区| 国产女精品视频网站免费| 国产精品久久久久久网站| 久久久久久久久网站| 性色av香蕉一区二区| 欧美激情视频网址| 亚洲最大福利视频网站| 91精品国产高清久久久久久久久| 久久久久久久久久久网站| 蜜臀久久99精品久久久久久宅男| 国产精品av在线播放| 亚洲精品视频免费在线观看| 亚洲午夜色婷婷在线| 国产精品一区二区久久| 热久久这里只有精品| 欧美午夜片在线免费观看| 国产a∨精品一区二区三区不卡| 欧美三级欧美成人高清www| 69av在线播放| 日韩欧美成人精品| 91久久精品视频| 日韩在线高清视频| 亚洲自拍偷拍区| 91免费精品视频| 一本色道久久综合亚洲精品小说| 欧美大秀在线观看| 91久久久久久久一区二区| 亚洲国产成人精品久久久国产成人一区| 亚洲免费中文字幕| 日本高清视频精品| 亚洲一区中文字幕| 国产精品扒开腿爽爽爽视频| 国产精品视频公开费视频| 亚洲大胆人体av| 欧美日韩激情视频| 亚洲美女av在线| 日韩乱码在线视频| 亚洲一区二区三区在线视频| 欧美成人免费小视频| 亚洲亚裔videos黑人hd| 一本大道香蕉久在线播放29| 日韩av电影在线网| 日韩av免费在线| 亚洲aaa激情| 在线观看日韩www视频免费| wwwwwwww亚洲| 色偷偷av一区二区三区乱| 欧美精品制服第一页| 日韩精品在线看| 欧美日韩中文字幕| 日韩av片永久免费网站| 久久久噜噜噜久久中文字免| 亚洲伊人第一页| 欧美综合国产精品久久丁香| 日韩激情视频在线| 国产亚洲视频在线| 久久91超碰青草是什么| 成年人精品视频| 国产成人精品午夜| 欧美日韩一区二区三区| 7777精品久久久久久| 欧美日韩午夜激情| 精品视频在线播放色网色视频| 久久久久久美女| 欧美大片va欧美在线播放| 亚洲人成在线电影| 欧美日韩在线视频一区二区| 欧美激情一级欧美精品| 九九久久久久99精品| 91精品国产自产在线观看永久| 欧美精品videossex性护士| 成人在线国产精品| 在线视频日韩精品| 青草青草久热精品视频在线网站| 欧美天堂在线观看| 国产精品久久久av| 久久精品久久久久| 91九色蝌蚪国产| 国产综合久久久久久| 亚洲人成在线观看网站高清| 国产精品视频一区二区三区四| 久久男人av资源网站| 亚洲精品91美女久久久久久久| 秋霞成人午夜鲁丝一区二区三区| 久久久久久久久久久免费| 亚洲成人中文字幕| 国产网站欧美日韩免费精品在线观看| 成人动漫网站在线观看| 色偷偷av一区二区三区乱| 久久99精品久久久久久青青91| 91精品久久久久久久久久入口| 欧美最猛黑人xxxx黑人猛叫黄| 国产精品手机播放| 亚洲精品国产电影| 国产999在线| 懂色aⅴ精品一区二区三区蜜月| 亚洲色图在线观看| 成人夜晚看av| 欧美精品国产精品日韩精品| 亚洲精品美女在线| 日韩av在线导航| 国产网站欧美日韩免费精品在线观看| 日韩精品一区二区视频| 午夜欧美不卡精品aaaaa| 久久久久日韩精品久久久男男| 色老头一区二区三区| 911国产网站尤物在线观看| 欧美人在线视频| 中文综合在线观看| 久久伊人免费视频| 国产精品免费一区二区三区都可以| 久久男人av资源网站| 2018日韩中文字幕| 日韩久久免费电影| 国产女精品视频网站免费| 国产91精品最新在线播放| 亚洲国产精品va在线观看黑人| 亚洲精品中文字幕女同| 91夜夜揉人人捏人人添红杏| 国语自产精品视频在线看一大j8| 精品在线观看国产| 亚洲一区精品电影| 国产精品久久久久aaaa九色| 97在线视频免费播放| 日韩的一区二区| 亚洲精品一区在线观看香蕉| 欧美激情一二三| 亚洲xxxx做受欧美| 色yeye香蕉凹凸一区二区av| 欧美性受xxxx白人性爽| 亚洲国产精品推荐| 国产一区二区三区网站| 亚洲精品美女久久| 91精品久久久久久久久中文字幕| 日韩成人在线视频观看| 欧美黑人一级爽快片淫片高清| 欧美www视频在线观看| 91超碰中文字幕久久精品| 69av成年福利视频| 久久婷婷国产麻豆91天堂|