Maison >développement back-end >C++ >Comment puis-je gérer efficacement 'Impossible de lancer un objet de type 'System.dbnull' pour taper 'System.String'' erreurs en C #?

Comment puis-je gérer efficacement 'Impossible de lancer un objet de type 'System.dbnull' pour taper 'System.String'' erreurs en C #?

Barbara Streisand
Barbara Streisandoriginal
2025-01-25 10:11:08623parcourir

How Can I Effectively Handle

Résolvez ingénieusement l'objet "incapable de convertir l'objet type" System.Dbnull "à l'objet de type" System.String "" Erreur

Lorsque vous essayez de convertir la valeur dbnull en une chaîne, il est souvent rencontré une erreur qui "ne peut pas être forcée de convertir un objet de" System.Dbnull "en un objet de" System.Dbnull ". Une méthode de traitement consiste à utiliser des instructions conditionnelles, si la valeur est dbnull, la chaîne vide est renvoyée. Cependant, cette méthode est fastidieuse et facile à faire des erreurs.

Une solution plus élégante consiste à utiliser une fonction générique pour traiter la conversion de la valeur de la base de données au type requis, comme indiqué ci-dessous:

Cette fonction reçoit un objet en entrée et renvoie la valeur une fois la conversion renvoyée dans le type requis (dans cet exemple). La méthode d'utilisation est la suivante:
<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>

En utilisant cette fonction générique, vous pouvez simplifier le code et éliminer la demande d'inspection conditionnelle pour assurer la sécurité du type et réduire la possibilité d'erreurs.
<code class="language-csharp">object accountNumber = 
          DBSqlHelperFactory.ExecuteScalar(connectionStringSplendidmyApp, 
                          CommandType.StoredProcedure, 
                          "spx_GetCustomerNumber", 
                          new SqlParameter("@id", id));</code>

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