|
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 の記述の方法で何とかなるのかと思って質問させもらいました。
|