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
Libérer: 2025-01-25 10:11:08
original
680 Les gens l'ont consulté

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:
public static T ConvertFromDBVal<T>(object obj)
{
    if (obj == null || obj == DBNull.Value)
    {
        return default(T); // 返回该类型的默认值
    }
    else
    {
        return (T)obj;
    }
}
Copier après la connexion

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.
object accountNumber = 
          DBSqlHelperFactory.ExecuteScalar(connectionStringSplendidmyApp, 
                          CommandType.StoredProcedure, 
                          "spx_GetCustomerNumber", 
                          new SqlParameter("@id", id));
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal