乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      測(cè)試ConnectionString是否能連接上數(shù)據(jù)庫(kù)服務(wù)器

       googo 2011-07-14

      測(cè)試ConnectionString是否能連接上數(shù)據(jù)庫(kù)服務(wù)器

      比如你要連接一個(gè)Sql Server服務(wù)器,你有一個(gè)connection string, 但是不知道是否是正確的,你可以這樣:

       

      var connection = new SqlConnection(connectionString);

      connection.Open();

      connection.Close();

       

      如果整個(gè)過程中沒有異常拋出,則說明connectionString是指向一個(gè)Sql Server的服務(wù)器。但是,如果connectionString里邊的Data Source(或者Server)的值是錯(cuò)的,就要等很久——大約30秒——才能從connection.Open()這一句拋出異常。有沒有辦法讓這個(gè) 過程快一點(diǎn)呢?

       

      你可以試著在connectionString里添加上: "Connection Timeout=3",這指示超時(shí)時(shí)間為3秒。但是實(shí)際上效果還是一樣的,異常仍然要在30秒之后才會(huì)拋出。

       

      你也可以試著用另一個(gè)線程去連接服務(wù)器,主線程在若干秒后調(diào)用該線程的 Abort()方法,但是,實(shí)驗(yàn)效果是行不通,因?yàn)槟莻€(gè)線程在connection.Open()里根本出不來,無法被Abort掉。

       

      最后,我的解決方法還是采用后臺(tái)線程,只不過如果到期尚未成功,那就當(dāng)做失敗,然后把它扔到一邊去,不再理它了:

       

                  //采用后臺(tái)線程來連接數(shù)據(jù)庫(kù),以便在服務(wù)器輸入錯(cuò)誤的情況下,不用等待很長(zhǎng)的時(shí)間才能得到一個(gè)錯(cuò)誤提示
                  string error = null;
                  var success = false;

                  // ReSharper disable AccessToModifiedClosure
                  // ReSharper disable UseObjectOrCollectionInitializer
                  var thread = new Thread(() =>
                                              {
                                                  try
                                                  {
                                                      connection.Open();
                                                      connection.Close();

                                                      success = true;
                                                  }
                                                  catch (SqlException ex)
                                                  {
                                                      error = ex.Message;
                                                  }
                                                  finally
                                                  {
                                                      if (connection.State == ConnectionState.Open)
                                                          connection.Close();
                                                  }
                                              });
                  // ReSharper restore AccessToModifiedClosure
                  // ReSharper restore UseObjectOrCollectionInitializer
                  thread.IsBackground = true;
                  var sw = Stopwatch.StartNew();
                  thread.Start();

                  var timeout = TimeSpan.FromSeconds(3);
                  while (sw.Elapsed < timeout)
                      thread.Join(TimeSpan.FromMilliseconds(200));
                  sw.Stop();

                  if (!success)
                  {
                      throw new Exception(error ?? "連接數(shù)據(jù)庫(kù)超時(shí),請(qǐng)檢查輸入的服務(wù)器是否正確。");
                  }

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多