<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      EasyText, EasyLicense 的作者, https://github.com/EasyHelper Good Good Study,Day Day Up.

       

      為什么要關(guān)閉數(shù)據(jù)庫連接,可以不關(guān)閉嗎?

      首先要說明的是連接數(shù)是有限制的:

      代碼如下:

      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("打開了{(lán)0}個(gè)連接", i);
      }

      運(yùn)行結(jié)果如下:

      image

      過一會(huì)就會(huì)提示打開連接超時(shí)了:

      clip_image002

       

      可以看到數(shù)據(jù)庫連接時(shí)有限制的,如果連接不關(guān)閉,而且使用的人比較多,那么系統(tǒng)很快就down掉了。

       

      但是有時(shí)候由于某些原因應(yīng)用程序可能只是幾個(gè)人使用,所以就有人設(shè)計(jì)了:

      在應(yīng)用程序啟動(dòng)的時(shí)候打開數(shù)據(jù)庫連接,在應(yīng)用程序關(guān)閉的時(shí)候關(guān)閉數(shù)據(jù)庫連接

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

      首先假設(shè)有一張表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開始執(zhí)行ExecuteCommand

       

      ExecuteCommand代碼如下:

      private static void ExecuteCommand(SqlConnection conn, int id)
      {
          Console.WriteLine("正在執(zhí)行." + id);
      
          Thread.Sleep(100);
      
          SqlCommand cmd = new SqlCommand(
             string.Format("Insert into Nums values('{0}') ", id), conn);
      
          cmd.ExecuteNonQuery();
      }

      運(yùn)行:

      clip_image002[5]

      可以看到ExecuteNonQuery方法拋出了異常,原因是連接處于關(guān)閉狀態(tài)。

       

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

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

      if (conn.State != System.Data.ConnectionState.Open)
          conn.Open();

      再次運(yùn)行:

      clip_image002[7]

      可以看到還是會(huì)出現(xiàn)連接已關(guān)閉的問題。你知道什么原因嗎?

       

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

      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("正在執(zhí)行.." + id);
      
              Thread.Sleep(100);
      
              SqlCommand cmd = new SqlCommand(
      
                 string.Format("Insert into Nums values('{0}') ", id), conn);
      
              cmd.ExecuteNonQuery();
      
          }
      
      }
      

      再次運(yùn)行:可以發(fā)現(xiàn)基本沒問題了.

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

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

       

       

      一天測(cè)試下來,沒出現(xiàn)任何問題。

       

      結(jié)論對(duì)于某些只有幾個(gè)人使用的應(yīng)用程序,可以不關(guān)閉數(shù)據(jù)庫連接,但是在寫代碼的時(shí)候最好要加上連接是否打開的判斷。

       

      你有什么好的看法呢,歡迎留下!

      posted @ 2011-08-09 06:24  LoveJenny  閱讀(55056)  評(píng)論(96)    收藏  舉報(bào)
      EasyText, EasyLicense 的作者, https://github.com/EasyHelper Good Good Study,Day Day Up.

       

      主站蜘蛛池模板: 国产粉嫩区一区二区三区| a4yy私人毛片| 亚洲在战av极品无码| a级黑人大硬长爽猛出猛进| 亚洲国产精品特色大片观看完整版| 国产又色又爽又黄的| 国产精品久久亚洲不卡| 国产专区一va亚洲v天堂| 精选国产av精选一区二区三区| 欧美性色黄大片| 亚洲av不卡电影在线网址最新| 国产精品一区二区久久精品无码 | 欧美日本在线| 日本午夜精品一区二区三区电影| 国产一区二区三区怡红院| 欧美日本在线| 国产精品青青青高清在线| 亚洲欧美偷拍另类A∨| 亚洲精品日韩在线观看| 国产第一页浮力影院入口| 国产亚洲精品第一综合麻豆| 四虎在线成人免费观看| 久久亚洲精品中文字幕馆| 永久免费的av在线电影网| 少妇夜夜春夜夜爽试看视频| japanese无码中文字幕| 日韩V欧美V中文在线| 亚洲国产在一区二区三区| 国产精品一级久久黄色片| 中西区| 日韩乱码人妻无码中文字幕视频 | 国产午夜成人久久无码一区二区 | 女厕偷窥一区二区三区| 日韩中文字幕免费在线观看| 国产久免费热视频在线观看| 精品国产精品午夜福利| 色偷偷中文在线天堂中文| 项城市| 国产精品一二三区久久狼| 亚洲日韩中文字幕在线播放| 四虎精品寂寞少妇在线观看|