この一般的な C# エラーは、コードがデータベースの null 値を null 非許容データ型に変換しようとしたときに発生します。 修正方法の内訳は次のとおりです:
1.ストアド プロシージャの Null 処理:
データベース ストアド プロシージャでは、NULL 値を明示的に管理する必要があります。 SQL の null 合体演算子 (ISNULL または COALESCE) または CASE ステートメントを使用して、null 許容列のデフォルト値を指定します。
2. C# パラメーターの型の一致:
IDbCommand
オブジェクトのパラメーターを定義するときは、C# のデータ型がデータベースの列の型と正確に一致していることを確認してください。 重要なのは、C# で null 許容型 (たとえば、long?
の代わりに long
) を使用して、null 許容データベース フィールドを正しく処理することです。
3.出力パラメータの安全なキャスト:
エラーは多くの場合、出力パラメータのキャストに起因します。 直接キャストする代わりに、変換する前に必ず DBNull
をチェックしてください:
<code class="language-csharp">var outputParam = dataAccCom.GetParameterValue(IDbCmd, "op_Id"); DataTO.Id = outputParam is DBNull ? 0 : Convert.ToInt64(outputParam); // Or a more appropriate default</code>
このコードは、条件演算子を使用して、outputParam
が DBNull
の場合にデフォルト値 (この例では 0) を割り当てます。 アプリケーションのコンテキストで意味のあるデフォルト値を選択してください。
4.堅牢な ReplaceNull
メソッド:
ReplaceNull
メソッド (使用されている場合) を確認します。 すべて データ型の null 値を適切に処理する必要があります。 DataTO
オブジェクトの null 許容フィールドに対して適切なデフォルト (数値の場合は 0、文字列の場合は "" など) を返します。
これらのチェックを実装し、適切なデフォルト値を使用することで、「オブジェクトを DBNull から他の型にキャストできません」という例外を防ぎ、より堅牢なコードを作成できます。
以上がC# で「オブジェクトを DBNull から他の型にキャストできません」例外を処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。