Je lis un résultat d'une base de données MS SQL 2008 avec un type de colonne dbtype.time d'un lecteur de données, en utilisant C# avec le framework DAAB 4.0. Mon problème est le MSDN docs dit que dbtype.time doit correspondre à une période de temps mais le seul constructeur proche pour le timespan je vois accepte un long, et le résultat retourné par le lecteur de données ne peut pas être converti en un long, ou directement à un timespanComment faire pour convertir le résultat Datareader de DbType.Time en objet Timespan?
J'ai trouvé ce Article qui montre la méthode datareader.getTimeSpan(), mais le lecteur de données dans daab 4.0 ne semble pas avoir cette méthode.
Comment puis-je convertir le résultat du lecteur de données en un objet de la plage de temps?
Les vôtres et les solutions de Ken sont bonnes. Cependant, si la valeur est null, le message d'exception de la solution de Ken est plus descriptif. 'SqlNullValueException - Les données sont nulles. Cette méthode ou propriété ne peut pas être appelée sur les valeurs Null' VS 'InvalidCastException - La distribution spécifiée n'est pas valide'. – TheWanderingMind
Pour répondre à BishopBarber commentez si la colonne peut être nullable vous devriez le convertir en TimeSpan? type nullable et vérifiez null. 'TimeSpan? span = lecteur ["tsfield"] == DBNull.Value? (TimeSpan?) Null: (TimeSpan?) Reader ["tsfield"] ' –
J'ai trouvé cette solution meilleure parce que je n'accède pas souvent à mon lecteur de données par index. J'ai cependant une méthode intermédiaire qui vérifie null. – MichaelChan