2009-04-02 11 views
4

J'ai une application C# sur MySql, en utilisant MySQL Connector; J'essaie de faire une requête DataReader , la requête s'exécute correctement, cependant, lorsque j'essaie d'accéder à un champ DateTime, MySqlConversionException est en cours {"Impossible de convertir la valeur date/heure MySQL en System.DateTime"}MySqlConversionException lors de l'accès au champ DateTime à partir de DataReader

c'est le prototype

if (dr != null && !dr.Read()) return; 

sesion.Id = Convert.ToInt32(dr["id"]); 
sesion.Usuario = Convert.ToInt32(dr["usuario"]); 
sesion.Estado = Convert.ToByte(dr["estado"]); 
// doesn't work 
sesion.FchCreacion = Convert.ToDateTime(dr["fch_creacion"]); 

Une suggestion? Merci d'avance

Répondre

9

Cette erreur se produit parfois si vous avez des valeurs datetime zéro dans votre base de données MySQL (00/00/0000 00:00). Essayez d'ajouter ceci à la fin de votre chaîne de connexion:

Allow Zero Datetime=true 
+0

Merci, je n'ai pas repéré ces valeurs, bonne astuce –

0

Je suggérerais qu'il peut s'agir d'une erreur spécifique à la culture - l'application est-elle sur le même serveur que la base de données, et ont-ils les mêmes paramètres de culture?

De même, la colonne est-elle définitivement une date-heure dans MySQL?

0

Il peut également s'agir d'une valeur DBNull.

2

Il y a quelques pièges potentiels lors de la conversion entre les dates MySQL/fois et .NET DateTimes, mais il y a un useful section in the MySQL documentation avec des conseils sur la façon de traiter les problèmes.

+0

Avez-vous et mis à jour le lien? Celui-ci est cassé. – jkw4703

+0

@ jkw4703: J'ai corrigé le lien. – LukeH