Heim >Backend-Entwicklung >C++ >Wie gehe ich mit DBNull -Werten um, wenn Daten aus einer Datenbank in C#abgerufen werden?
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!