ホームページ >バックエンド開発 >C++ >C# で「オブジェクトを DBNull から他の型にキャストできません」エラーを処理する方法?

C# で「オブジェクトを DBNull から他の型にキャストできません」エラーを処理する方法?

DDD
DDDオリジナル
2025-01-11 15:06:421076ブラウズ

How to Handle

オブジェクトを DBNull から他の型に変換できません

エラーの説明:

「オブジェクトを 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。