Maison >développement back-end >C++ >Comment gérer efficacement les erreurs DBNull.Value lors de la récupération de données d'une base de données ?

Comment gérer efficacement les erreurs DBNull.Value lors de la récupération de données d'une base de données ?

DDD
DDDoriginal
2025-01-25 10:21:11764parcourir

How to Effectively Handle DBNull.Value Errors When Retrieving Data from a Database?

Adressant les valeurs nuls de la base de données: une solution pour "Impossible de lancer un objet de type 'System.dbnull' pour taper 'System.String'"

Les interactions de la base de données conduisent souvent à l'erreur frustrante "Impossible de lancer un objet de type" System.Dbnull "pour taper" System.String "" Erreur. Cela découle de la tentative de convertir la valeur nulle d'une base de données en un type de données spécifique. Ce qui suit démontre une solution robuste:

Tout d'abord, considérez une approche de base:

<code class="language-csharp">public string GetCustomerNumber(Guid id)
{
    object accountNumber = DBSqlHelperFactory.ExecuteScalar(connectionStringSplendidmyApp, CommandType.StoredProcedure, "GetCustomerNumber", new SqlParameter("@id", id));

    if (accountNumber == DBNull.Value)
    {
        return string.Empty;
    }
    else
    {
        return accountNumber.ToString();
    }
}</code>

Cette méthode gère efficacement Nulls en renvoyant une chaîne vide. Cependant, une solution plus polyvalente et efficace utilise une fonction générique:

<code class="language-csharp">public static T ConvertFromDBVal<T>(object obj)
{
    if (obj == null || obj == DBNull.Value)
    {
        return default(T);
    }
    else
    {
        return (T)obj;
    }
}</code>

Cette fonction générique simplifie le code d'origine à:

<code class="language-csharp">return ConvertFromDBVal<string>(accountNumber);</code>

Cette solution élégante offre la sécurité du type et renvoie la valeur par défaut appropriée pour tout type de données, améliorant la lisibilité du code et la maintenabilité. Il s'agit d'une méthode supérieure pour gérer les valeurs nuls récupérées à partir des requêtes de base de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn