Heim >Backend-Entwicklung >C++ >Wie werden DBNull-Werte beim Zuweisen zu SQL-Parametern in C# behandelt?
DBNull-Wert kann SqlParameter nicht zugewiesen werden
Beim Versuch, SqlParameter einen Nullwert zuzuweisen, meldet der folgende Code einen Fehler:
<code class="language-csharp">SqlParameter[] parameters = new SqlParameter[1]; SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int); planIndexParameter.Value = (AgeItem.AgeIndex == null) ? DBNull.Value : AgeItem.AgeIndex; parameters[0] = planIndexParameter;</code>
Das Problem besteht darin, dass der Operator ?: den Rückgabetyp nicht bestimmen kann, da es sich möglicherweise um einen Wert vom Typ int oder einen Wert vom Typ DBNull handelt und beide nicht kompatibel sind.
Lösung:
Um dieses Problem zu lösen, können Sie die folgenden Methoden wählen:
<code class="language-csharp">SqlParameter[] parameters = new SqlParameter[1]; SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int); planIndexParameter.Value = (object)AgeItem.AgeIndex ?? DBNull.Value; parameters[0] = planIndexParameter; </code>
<code class="language-csharp">SqlParameter[] parameters = new SqlParameter[1]; SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int); planIndexParameter.Value = AgeItem.AgeIndex ?? DBNull.Value; parameters[0] = planIndexParameter; </code>
Laut der MSDN-Dokumentation für den ?:-Operator müssen erster_Ausdruck und zweiter_Ausdruck vom gleichen Typ sein, sonst kann ein Typ implizit in den anderen konvertiert werden.
Das obige ist der detaillierte Inhalt vonWie werden DBNull-Werte beim Zuweisen zu SQL-Parametern in C# behandelt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!