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