J'ai un tas de méthodes utilitaires de conversion pour de tels scénarios, dans le format similaire à ce sujet.
// tries to convert a general object to double, if a defaultValue is provided, it will silently fall back to it, if not, it will throw exceptions
public static double ToDouble(object obj, double? defaultValue = null) {
if (obj == null || obj == "" || obj == DBNull.Value) return 0.0;
try {
if (obj is string)
return double.Parse((string)obj);
return Convert.ToDouble(obj);
} catch {
if (defaultValue != null) return defaultValue.Value;
throw;
}
}
J'utilise ce genre d'utilitaires de conversion de type faible à fort surtout quand je travaille avec des trucs de ADO.NET, ou d'autres interfaces faiblement typés, comme la lecture des données à partir d'Excel par exemple.
Dans mon code réel, je permets également de passer un CultureInfo
pour la conversion de chaîne, et faire d'autres choses comme la normalisation des signes décimaux, etc. pour obtenir la meilleure tolérance de format.
La clause de capture générale pourrait être améliorée bien sûr en attrapant des types d'exception spécifiques comme FormatException
, mais pour mes besoins cela fonctionne bien.
dans votre requête assurez-vous qu'il n'y a pas DBNull. Quel serveur utilisez-vous? –
voir la référence http://www.w3schools.com/sql/sql_isnull.asp, utilisez la méthode pour vérifier la valeur null avec SQL. –
Que voulez-vous qu'il se passe? –