Heim > Backend-Entwicklung > C++ > Wie vermeide ich den Fehler „Objekt vom Typ „System.DBNull' kann nicht in den Typ „System.String' umgewandelt werden' in C#-Datenbankabfragen?

Wie vermeide ich den Fehler „Objekt vom Typ „System.DBNull' kann nicht in den Typ „System.String' umgewandelt werden' in C#-Datenbankabfragen?

Linda Hamilton
Freigeben: 2025-01-25 10:16:14
Original
656 Leute haben es durchsucht

How to Avoid

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage