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:
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(); } }
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:
public static T ConvertFromDBVal<T>(object obj) { if (obj == null || obj == DBNull.Value) { return default(T); } else { return (T)obj; } }
Cette fonction générique simplifie le code d'origine à:
return ConvertFromDBVal<string>(accountNumber);
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!