Maison >développement back-end >C++ >Comment gérer efficacement les erreurs DBNull.Value lors de la récupération de données d'une base de données ?
Adressant les valeurs nuls de la base de données: une solution pour "Impossible de lancer un objet de type 'System.dbnull' pour taper 'System.String'"
Les interactions de la base de données conduisent souvent à l'erreur frustrante "Impossible de lancer un objet de type" System.Dbnull "pour taper" System.String "" Erreur. Cela découle de la tentative de convertir la valeur nulle d'une base de données en un type de données spécifique. Ce qui suit démontre une solution robuste:
Tout d'abord, considérez une approche de base:
<code class="language-csharp">public string GetCustomerNumber(Guid id) { object accountNumber = DBSqlHelperFactory.ExecuteScalar(connectionStringSplendidmyApp, CommandType.StoredProcedure, "GetCustomerNumber", new SqlParameter("@id", id)); if (accountNumber == DBNull.Value) { return string.Empty; } else { return accountNumber.ToString(); } }</code>
Cette méthode gère efficacement Nulls en renvoyant une chaîne vide. Cependant, une solution plus polyvalente et efficace utilise une fonction générique:
<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>
Cette fonction générique simplifie le code d'origine à:
<code class="language-csharp">return ConvertFromDBVal<string>(accountNumber);</code>
Cette solution élégante offre la sécurité du type et renvoie la valeur par défaut appropriée pour tout type de données, améliorant la lisibilité du code et la maintenabilité. Il s'agit d'une méthode supérieure pour gérer les valeurs nuls récupérées à partir des requêtes de base de données.
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!