C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■96703 / 2階層)  try...catch の文字列の設定方法について
□投稿者/ 天海 (7回)-(2021/01/11(Mon) 14:52:34)


SQLの呼び出しが以下のようになっています。

private static DataTable GetDatatable(string connectionstring, string CommandText)
{
 var table = new DataTable();
 dtError = null;

 connectionstring += "; connect timeout=60";
 using (var connection = new SqlConnection(connectionstring))
 {
  using(var command = connection.CreateCommand())
  {
   try
   {
    command.CommandText = CommandText;
    var adapter = new SqlDataAdapter(command);
    adapter.Fill(table);
   }
   catch(Exception e)
   {
    GetErrorDatatable(connectionstring, CommandText);
    throw new Exception(e.Message);
   }
  }
 }
 return table;
}

CommandText に以下のSQLを入れて呼び出したときに

DECLARE @ID INT = 1;

BEGIN TRY
 BEGIN TRANSACTION

 INSERT INTO DB (ID)
 VALUES (@ID, @ID)     ←本来は VALUES (@ID) なのですがあえてエラーになるようにします。

 COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
THROW 50000, 'ERROR', 1
END CATCH


呼び出し側 C# プログラム

try {
 GetDatatable(connectionstring, CommandText);
}
catch(Exception ex)
{
 MessageBox.Show(ex.Message);
}

この時に表示されるメッセージを "ERROR" にしたいのです。

しかし、
本来のやりたいことは
ネットワークの切断等による接続エラーによるものか
処理のエラーなのかSQLの記述によるエラーなのかを判断したいのです。

もっといい方法があれば教えてください。
GetDatatable() は変更できないので
SQL の記述の方法で何とかなるのかと思って質問させもらいました。



編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[1]: try...catch の文字列の設定方法について /WebSurfer →Re[3]: try...catch の文字列の設定方法について /WebSurfer
→Re[3]: try...catch の文字列の設定方法について /魔界の仮面弁士
 
上記関連ツリー

try...catch の文字列の設定方法について / 天海 (21/01/11(Mon) 11:30) #96698
Re[1]: try...catch の文字列の設定方法について / Azulean (21/01/11(Mon) 13:34) #96700
│└ Re[2]: try...catch の文字列の設定方法について / とっちゃん (21/01/11(Mon) 14:11) #96701
Re[1]: try...catch の文字列の設定方法について / WebSurfer (21/01/11(Mon) 13:33) #96699
│└ try...catch の文字列の設定方法について / 天海 (21/01/11(Mon) 14:52) #96703 ←Now
│  ├ Re[3]: try...catch の文字列の設定方法について / WebSurfer (21/01/11(Mon) 18:12) #96704
│  │└ Re[4]: try...catch の文字列の設定方法について / 天海 (21/01/12(Tue) 08:29) #96705
│  │  └ Re[5]: try...catch の文字列の設定方法について / WebSurfer (21/01/12(Tue) 09:25) #96706
│  └ Re[3]: try...catch の文字列の設定方法について / 魔界の仮面弁士 (21/01/12(Tue) 10:47) #96707
│    └ Re[4]: try...catch の文字列の設定方法について / 天海 (21/01/12(Tue) 11:20) #96708 解決済み
Re[1]: try...catch の文字列の設定方法について / WebSurfer (21/01/11(Mon) 14:50) #96702

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信