Maison > développement back-end > C++ > Comment gérer les erreurs « L'objet ne peut pas être converti de DBNull vers d'autres types » en C# ?

Comment gérer les erreurs « L'objet ne peut pas être converti de DBNull vers d'autres types » en C# ?

DDD
Libérer: 2025-01-11 15:06:42
original
1138 Les gens l'ont consulté

How to Handle

Impossible de convertir un objet de DBNull vers un autre type

Description de l'erreur :

Le message d'erreur "Impossible de convertir l'objet de DBNull vers un autre type" indique qu'une tentative de conversion d'une valeur DBNull (représentant une valeur nulle dans la base de données) en un type non nullable (Int64 dans ce cas) a échoué.

Raison de l'erreur :

Dans le code fourni, la ligne suivante tente de convertir la valeur du paramètre de sortie nommé "op_Id" en Int64 :

<code>DataTO.Id = Convert.ToInt64(dataAccCom.GetParameterValue(IDbCmd, "op_Id"));</code>
Copier après la connexion

Si la procédure stockée renvoie une valeur DBNull pour ce paramètre, la conversion échouera avec une erreur.

Solution :

Pour résoudre ce problème, vérifiez explicitement si la valeur du paramètre de sortie est DBNull avant de tenter la conversion. Si DBNull, null ou la valeur par défaut est affecté à la propriété correspondante dans l'objet DataTO. Voici le code mis à jour :

<code>var outputParam = dataAccCom.GetParameterValue(IDbCmd, "op_Id");
if (outputParam != DBNull.Value)
    DataTO.Id = Convert.ToInt64(outputParam);
else
    DataTO.Id = null; // 或分配默认值,例如 0 或 -1</code>
Copier après la connexion

Cette modification garantit que le code est robuste face aux valeurs nulles pouvant exister dans la base de données. L'utilisation de outputParam != DBNull.Value est plus concise et claire que !(outputParam is DBNull) et il n'y a pas de différence significative de performances. Le choix de définir DataTO.Id sur null ou une valeur par défaut dépend de la logique de votre application et du fait que le type de l'attribut DataTO.Id autorise la suppression.

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