C# でのステートメント、SQL、および SqlConnection の使用
データベース操作中のエラー処理は、開発において非常に重要です。 C# で SQL および SqlConnection を操作する場合、using ステートメントは、リソースを処理し、リソースを適切に破棄するための便利な構文を提供します。ただし、操作中に発生する可能性のある例外の処理については疑問が生じます。
Using ステートメントは接続開始エラーを処理できますか?
private static void CreateCommand(string queryString, string connectionString) { using (SqlConnection connection = new SqlConnection( connectionString)) { SqlCommand command = new SqlCommand(queryString, connection); command.Connection.Open(); command.ExecuteNonQuery(); } }
デフォルトでは、using ステートメントは次のように変換します。明示的な catch ステートメントなしで try-finally ブロックに移行します。これは、接続を開くときにエラーが発生した場合、using ステートメントは例外をキャッチしないことを意味します。
using ステートメント外でのエラーのキャッチ
キャッチしようとした場合using ステートメントの外にあるエラーは、破棄ロジックがすでに実行されているためキャプチャされません。
解決策の使用ステートメント
using ステートメントを使用して接続開始エラーを処理するには、using ブロック内に try-catch ブロックを追加できます。
private static void CreateCommand(string queryString, string connectionString) { using (SqlConnection connection = new SqlConnection( connectionString)) { try { SqlCommand command = new SqlCommand(queryString, connection); command.Connection.Open(); command.ExecuteNonQuery(); } catch (InvalidOperationException) { // Log and/or rethrow or ignore } catch (SqlException) { // Log and/or rethrow or ignore } catch (ArgumentException) { // Log and/or rethrow or ignore } } }
この変更により、接続中の潜在的な例外が確実に発生します。オープニングは適切に処理されます。
以上がC# の `using` ステートメントは SqlConnection オープン エラーを処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。