筆記:MSSQL處理拋出多個異常,C#怎麼個捕獲法子

來源:互聯網
上載者:User

首先感謝@忙碌追逐遺忘提供的可以拋異常SQL文:

如下:

RAISERROR(N'異常1',11,5)WITH NOWAIT
SELECT 1
RAISERROR(N'異常2',11,5)WITH NOWAIT
SELECT 2
RAISERROR(N'異常3',11,5)WITH NOWAIT
SELECT 3

 在SSMS中調試的訊息如下:

 訊息 50000,層級 11,狀態 5,第 3 行
異常1
(1 行受影響)
訊息 50000,層級 11,狀態 5,第 5 行
異常2
(1 行受影響)
訊息 50000,層級 11,狀態 5,第 7 行
異常3
(1 行受影響)

 可以知道 確實有3個異常拋出 。。

 

然後我是這樣捕捉的,不知道合不合規矩。

按鈕+事件:

 

  /// <summary>
  /// 測試SQL拋出多異常時,C#處理的順序或者處理方式。
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  protected void btnMultiExceptions_Click(object sender, EventArgs e)
  {
      try
      {
          StringBuilder _sqlBuilder = new StringBuilder();
          _sqlBuilder.AppendLine(" RAISERROR(N'異常1',11,5)WITH NOWAIT   ");
          _sqlBuilder.AppendLine(" SELECT 1   ");
          _sqlBuilder.AppendLine(" RAISERROR(N'異常2',11,5)WITH NOWAIT   ");
          _sqlBuilder.AppendLine(" SELECT 2   ");
          _sqlBuilder.AppendLine(" RAISERROR(N'異常3',11,5)WITH NOWAIT   ");
          _sqlBuilder.AppendLine(" SELECT 3   ");

          ******.MSSQL.SqlServerDataAccess.StaticExcuteNoQuery(_sqlBuilder.ToString());
      }
      catch (Exception ex)
      {
          txtShow.Text = ex.Message;    ///txtShow是個文字框。我把Message顯示在裡面。     
      }
  }

 現在看看結果:

 

 

 

 MSSQL中的多異常,在C#中成了一個 ?

 小菜鳥猜是這樣的。

 C#處理SQLException的時候,都以一個事務為單位,不管這次事務操作拋出多少個SQL異常,在C#這邊,捕獲的都是一個。

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.