Maison >développement back-end >C++ >Comment gérer les valeurs DBNull lors de la récupération de données d'une base de données en C# ?
C # Base de données Lire la valeur DBNULL
Lors de la récupération des données de la base de données, la valeur de retour peut rencontrer une situation avec null ou dbnull. Cela peut entraîner des erreurs lorsque vous essayez de convertir les valeurs en types spécifiques (tels que la chaîne).
Le fragment de code suivant montre comment résoudre ce problème: le code d'origine tente de convertir directement la méthode
de la méthode en une chaîne, provoquant une erreur. dbnull 'au type' type '"System.String'". ExecuteScalar
<.> 1. Utilisez une vérification de valeur vacante pour la conversion de type explicite:
Avant d'essayer d'appliquer la conversion, vous pouvez explicitement vérifier dbnull. Ce qui suit est le code après modification:
<.> 2. Utilisez des fonctions génériques pour la conversion de type:
<code class="language-csharp">public string GetCustomerNumber(Guid id) { object accountNumber = DBSqlHelperFactory.ExecuteScalar(connectionStringSplendidCRM, CommandType.StoredProcedure, "spx_GetCustomerNumber", new SqlParameter("@id", id)); if (accountNumber is DBNull) { return string.Empty; // 返回空字符串 } else { return accountNumber.ToString(); } }</code>
Vous pouvez créer une fonction générique pour gérer la conversion:
Ensuite, vous pouvez l'utiliser comme suit:
<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 vous permet de convertir l'objet retourné en n'importe quel type spécifié, ce qui rend le code plus courant et plus facile à lire.
<code class="language-csharp">return ConvertFromDBVal<string>(accountNumber);</code>Cette réponse révisée maintient l'image d'origine, utilise un langage plus clair et plus concis et restructait le contenu pour une amélioration de la lisibilité tout en vue de la signification d'origine.
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!