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
Freigeben: 2025-01-25 10:27:10
Original
848 Leute haben es durchsucht

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:

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();
    }
}
Nach dem Login kopieren

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

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

public static T ConvertFromDBVal<T>(object obj)
{
    if (obj == null || obj == DBNull.Value)
    {
        return default(T); // 返回该类型的默认值
    }
    else
    {
        return (T)obj;
    }
}
Nach dem Login kopieren

Sie können es dann wie folgt verwenden:

return ConvertFromDBVal<string>(accountNumber);
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage