Heim >Backend-Entwicklung >C++ >Wie gehe ich mit dem Fehler „Objekt kann nicht von DBNull in andere Typen umgewandelt werden' in C# um?

Wie gehe ich mit dem Fehler „Objekt kann nicht von DBNull in andere Typen umgewandelt werden' in C# um?

DDD
DDDOriginal
2025-01-11 15:06:421076Durchsuche

How to Handle

Objekt kann nicht von DBNull in einen anderen Typ konvertiert werden

Fehlerbeschreibung:

Die Fehlermeldung „Objekt konnte nicht von DBNull in einen anderen Typ konvertiert werden“ weist darauf hin, dass ein Versuch, einen DBNull-Wert (der einen Nullwert in der Datenbank darstellt) in einen nicht nullbaren Typ (in diesem Fall Int64) zu konvertieren, fehlgeschlagen ist.

Fehlergrund:

Im bereitgestellten Code versucht die folgende Zeile, den Wert des Ausgabeparameters mit dem Namen „op_Id“ in einen Int64 umzuwandeln:

<code>DataTO.Id = Convert.ToInt64(dataAccCom.GetParameterValue(IDbCmd, "op_Id"));</code>

Wenn die gespeicherte Prozedur einen DBNull-Wert für diesen Parameter zurückgibt, schlägt die Konvertierung mit einem Fehler fehl.

Lösung:

Um dieses Problem zu beheben, prüfen Sie explizit, ob der Wert des Ausgabeparameters DBNull ist, bevor Sie die Konvertierung versuchen. Bei DBNull wird der entsprechenden Eigenschaft im DataTO-Objekt null oder der Standardwert zugewiesen. Hier ist der aktualisierte Code:

<code>var outputParam = dataAccCom.GetParameterValue(IDbCmd, "op_Id");
if (outputParam != DBNull.Value)
    DataTO.Id = Convert.ToInt64(outputParam);
else
    DataTO.Id = null; // 或分配默认值,例如 0 或 -1</code>

Diese Änderung stellt sicher, dass der Code robust ist, wenn er mit Nullwerten umgeht, die möglicherweise in der Datenbank vorhanden sind. Die Verwendung von outputParam != DBNull.Value ist prägnanter und klarer als !(outputParam is DBNull) und es gibt keinen signifikanten Unterschied in der Leistung. Die Wahl, DataTO.Id auf null oder einen Standardwert zu setzen, hängt von Ihrer Anwendungslogik ab und davon, ob der Typ des DataTO.Id-Attributs eine Nullsetzung zulässt.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit dem Fehler „Objekt kann nicht von DBNull in andere Typen umgewandelt werden' in C# um?. 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