Bonjour,
Il ne s'agit pas d'un problème mais du contournement d'un problème que j'ai déjà remarqué dans SQL Server/C# et que je vous propose et bien que ma solution marche si vous avez plus "élégant" je suis preneur.
La plupart des codes que je développe en ADO avec C# pour accès à une base SQL Server utilise le OleDb fournisseur en partie parce que j'utilise SSIS 2008R2 et que dans ces conditions, Ole Db est largement le meilleur fournisseur.
Très souvent il m'arrive d'utiliser les connecteurs SSIS et de ne pas me poser des questions pour l'accès à la BD mais il m'arrive de devoir faire des scripts complexes qui nécessite du code via ADO.
Il s'avère que j'utilise des tables de trace ou une datetime me permet de repérer les évenements. La précision à quelques millisecondes près me va bien.
Sauf que lorsque j'utilise DateTime.Now et que je le transfère en paramètre d'une requête préparée avec un OleDbType = OleDbType.Date je "perds" la précision des millisecondes à l'insertion dans la table.
J'ai beau avoir cherché en changeant le type en datetime2 mais rien n'y fait et comme je ne suis pas spécialement fan des timestamp (peut être à tors j'avoue), je ne savais pas quoi faire.
Alors j'ai eu l'idée non pas d'utiliser un OleDbType.Date comme paramètre mais un OleDbType.VarChar comme paramètre et mon DateTime.Now je l'ai transformé en : DateTime.Now.Millisecond.ToString().PadLeft(3,'0').
La solution fonctionne même si elle n'est pas très élégante.
Partager