Heim >Backend-Entwicklung >C++ >Wie gehe ich mit DBNull -Werten um, wenn Daten aus einer Datenbank in C#abgerufen werden?

Wie gehe ich mit DBNull -Werten um, wenn Daten aus einer Datenbank in C#abgerufen werden?

Susan Sarandon
Susan SarandonOriginal
2025-01-25 10:27:10808Durchsuche

How to Handle DBNull Values When Retrieving Data from a Database in C#?

C# verarbeitet DBNull-Wert beim Lesen der Datenbank

Beim Abrufen von Daten aus der Datenbank kann es sein, dass der Rückgabewert Null oder DBNull lautet. Dies kann zu Fehlern führen, wenn versucht wird, einen Wert in einen bestimmten Typ (z. B. eine Zeichenfolge) umzuwandeln.

Der folgende Codeausschnitt zeigt, wie dieses Problem gelöst werden kann: Der Originalcode versucht, das Ergebnis der ExecuteScalar-Methode direkt in eine Zeichenfolge umzuwandeln, was zu der Fehlermeldung „Ein Objekt vom Typ „System.DBNull“ kann nicht umgewandelt werden“ führt Geben Sie „System.String“ ein.

Um dieses Problem zu lösen, können Sie die folgenden Methoden verwenden:

1. Verwenden Sie die Nullprüfung für die explizite Typkonvertierung:

Sie können explizit nach DBNull suchen, bevor Sie eine Umwandlung versuchen. Das Folgende ist der geänderte Code:

<code class="language-csharp">public string GetCustomerNumber(Guid id)
{
    object accountNumber =
        DBSqlHelperFactory.ExecuteScalar(connectionStringSplendidCRM,
                            CommandType.StoredProcedure,
                            "spx_GetCustomerNumber",
                            new SqlParameter("@id", id));

    if (accountNumber is DBNull)
    {
        return string.Empty; // 返回空字符串
    }
    else
    {
        return accountNumber.ToString();
    }
}</code>

2. Verwenden Sie generische Funktionen für die Typkonvertierung:

Sie können eine generische Funktion erstellen, um die Konvertierung durchzuführen:

<code class="language-csharp">public static T ConvertFromDBVal<T>(object obj)
{
    if (obj == null || obj == DBNull.Value)
    {
        return default(T); // 返回该类型的默认值
    }
    else
    {
        return (T)obj;
    }
}</code>

Sie können es dann wie folgt verwenden:

<code class="language-csharp">return ConvertFromDBVal<string>(accountNumber);</code>

Mit dieser generischen Funktion können Sie das zurückgegebene Objekt in einen beliebigen angegebenen Typ konvertieren, wodurch der Code vielseitiger und leichter lesbar wird.

Diese überarbeitete Antwort behält das Originalbild bei, verwendet eine klarere und prägnantere Sprache und strukturiert den Inhalt für eine bessere Lesbarkeit neu, während die ursprüngliche Bedeutung erhalten bleibt.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit DBNull -Werten um, wenn Daten aus einer Datenbank in C#abgerufen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn