adressieren Sie das "Objekt des Typs" System "System.dbnull" zum Typ 'System.String' "in Datenbankabfragen
Datenbankinteraktionen können manchmal das "Objekt vom Typ" System "-System nicht gießen" -Styps -System.String '"-Aussatz. Dies geschieht, wenn Sie versuchen, einen System.DBNull
Datenbankwert direkt in eine Zeichenfolge umzuwandeln. Lassen Sie uns Lösungen untersuchen, um dies zu verhindern.
Hier ist ein überarbeiteter Code -Snippet, der einen robusten Ansatz zeigt:
<code class="language-csharp">public string GetCustomerNumber(Guid id) { object accountNumber = DBSqlHelperFactory.ExecuteScalar(connectionStringSplendidCRM, CommandType.StoredProcedure, "spx_GetCustomerNumber", new SqlParameter("@id", id)); return accountNumber is DBNull ? string.Empty : accountNumber.ToString(); }</code>
Diese verbesserte Version vermeidet direktes Casting. Es verwendet den bedingten Operator (?:
), um zu überprüfen, ob accountNumber
DBNull
ist. Wenn ja, wird eine leere Zeichenfolge zurückgegeben; Ansonsten konvertiert ToString()
das Objekt sicher in eine Zeichenfolge.
Betrachten Sie für eine vielseitigere Lösung diese generische Funktion:
<code class="language-csharp">public static T ConvertFromDBVal<T>(object obj) { if (obj == null || obj == DBNull.Value) { return default(T); // Returns the default value for the specified type } return (T)obj; }</code>
Diese generische Funktion übernimmt verschiedene Datentypen. Sie geben den Zieltyp mithilfe von Typparametern an und ermöglichen sicheren Konvertierungen für sichere und Typ-Korrekturen:
<code class="language-csharp">return ConvertFromDBVal<string>(accountNumber);</code>
Dieser Ansatz ist sauberer, wiederverwendbarer und weniger anfällig für Gussfehler. Durch die Implementierung dieser Methoden können Sie die Werte DBNull
effektiv verarbeiten und verhindern, dass das Objekt vom Typ 'System' System nicht gegossen wird.
Das obige ist der detaillierte Inhalt vonWie vermeide ich den Fehler „Objekt vom Typ „System.DBNull' kann nicht in den Typ „System.String' umgewandelt werden' in C#-Datenbankabfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!