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# ?
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>
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>
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!