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