エラーの説明:
「オブジェクトを DBNull から他の型に変換できません」というエラー メッセージは、DBNull 値 (データベース内の null 値を表す) を null 非許容型 (この場合は Int64) に変換しようとして失敗したことを示します。
エラーの理由:
提供されたコードでは、次の行は「op_Id」という名前の出力パラメーターの値を Int64 に変換しようとします。
<code>DataTO.Id = Convert.ToInt64(dataAccCom.GetParameterValue(IDbCmd, "op_Id"));</code>ストアド プロシージャがこのパラメータに対して DBNull 値を返した場合、変換はエラーで失敗します。
解決策:
この問題を解決するには、変換を試行する前に、出力パラメータの値が DBNull かどうかを明示的に確認します。 DBNull、null、またはデフォルト値の場合、DataTO オブジェクトの対応するプロパティに割り当てられます。更新されたコードは次のとおりです:
<code>var outputParam = dataAccCom.GetParameterValue(IDbCmd, "op_Id"); if (outputParam != DBNull.Value) DataTO.Id = Convert.ToInt64(outputParam); else DataTO.Id = null; // 或分配默认值,例如 0 或 -1</code>この変更により、データベースに存在する可能性のある null 値を処理する際にコードが堅牢になります。
を使用すると、outputParam != DBNull.Value
よりも簡潔かつ明確になり、パフォーマンスに大きな違いはありません。 !(outputParam is DBNull)
を DataTO.Id
に設定するかデフォルト値に設定するかの選択は、アプリケーションのロジックと、null
属性のタイプで null 化が許可されているかどうかによって異なります。 DataTO.Id
以上がC# で「オブジェクトを DBNull から他の型にキャストできません」エラーを処理する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。