ホームページ > バックエンド開発 > C++ > C# データベース クエリでの「タイプ 'System.DBNull' のオブジェクトをタイプ 'System.String' にキャストできません」エラーを回避する方法

C# データベース クエリでの「タイプ 'System.DBNull' のオブジェクトをタイプ 'System.String' にキャストできません」エラーを回避する方法

Linda Hamilton
リリース: 2025-01-25 10:16:14
オリジナル
728 人が閲覧しました

How to Avoid

「system.dbnull」タイプの「system.dbnull」の「system.string」の「dbnull」の「キャストできない」「データベースクエリのエラー

データベースインタラクションは、「system.dbnull」タイプの「system.dbnull」の「system.string」「例外」に「system.dbnull」の「キャストできない」をスローすることがあります。これは、A System.DBNullこれは、堅牢なアプローチを示す改訂されたコードスニペットです:

この改善されたバージョンは、直接キャストを回避します。 条件付き演算子(
public string GetCustomerNumber(Guid id)
{
   object accountNumber = DBSqlHelperFactory.ExecuteScalar(connectionStringSplendidCRM, 
                                                          CommandType.StoredProcedure, 
                                                          "spx_GetCustomerNumber", 
                                                          new SqlParameter("@id", id));

   return accountNumber is DBNull ? string.Empty : accountNumber.ToString();
}
ログイン後にコピー
)を使用して、

is ?:であるかどうかを確認します。もしそうなら、空の文字列が返されます。それ以外の場合は、accountNumberオブジェクトを文字列に安全に変換します DBNullより汎用性の高いソリューションについては、この一般的な関数を考慮してください:ToString()

この汎用関数は、さまざまなデータ型を処理します。 タイプパラメーターを使用してターゲットタイプを指定し、安全でタイプが正しい変換を可能にします。

public static T ConvertFromDBVal<T>(object obj)
{
    if (obj == null || obj == DBNull.Value)
    {
        return default(T); // Returns the default value for the specified type
    }
    return (T)obj;
}
ログイン後にコピー
このアプローチはよりクリーンで、より再利用可能で、鋳造エラーの傾向が少なくなります。 これらのメソッドを実装することにより、systemのオブジェクトをキャストできないことを防ぐことができます。>

以上がC# データベース クエリでの「タイプ 'System.DBNull' のオブジェクトをタイプ 'System.String' にキャストできません」エラーを回避する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート