Problème d'ajout d'un Datetime dans SQLServeur avec C#

Résolu
Electrochip Messages postés 5 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 20 novembre 2004 - 20 nov. 2004 à 01:24
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 16 déc. 2007 à 10:30
Bonjour,

J'ai un gros problème, j'aimerai ajouter dans une base de donnée SQLServeur une occurence reprenant divers champs de type texte, mais aussi un champ de type DateTime.

J'arrive à faire mon INSERT sans problème lorsque j'essaye d'ajouter juste les champs de type texte. Par contre lorsque je rajoute le champ de type datetime, j'ai une erreur que je ne comprend pas "There is no source code available for the current location."

Bref, j'ai un gros problème. Le type datetime de C# n'est il pas compatible avec le type datetime de sqlserveur...? Ca me parait bizard. J'ai lu sur un site que si on met directement une valeur string représentant une date à la place de la variable datetime que l'on veut ajouter, le SGBD s'occupe de la convertir automatiquement dans le type datetime. Mais celà ne fonctionne pas non plus

Voici une partie de mon code:

public override int EncodageClient(int IdMedecin, Client ClientInfo) /* exceptions: ExceptionEncodageClient */
{
System.Console.WriteLine("Client exécute: Méthode EncodageClient");

SqlConnection Connexion = new SqlConnection("Server=localhost;Database=Inpres-Soft;User ID=sa;Password=");
Connexion.Open();

// Reconversion de la date d'ajout (string -> DateTime)
DateTime DateAjout = Convert.ToDateTime(ClientInfo.DateModif);

SqlCommand Requete = new SqlCommand("INSERT INTO [Client](Nom, DateModif) VALUES('" + ClientInfo.Nom + "', '" + DateAjout + "');SELECT @@IDENTITY;", Connexion);
int IDClient = Convert.ToInt32((decimal)Requete.ExecuteScalar()); // Retourne l'id du client qui vient d'être encodé

if(IDClient > 0)
{
Connexion.Close();
return IDClient;
}
Connexion.Close();
throw new ExceptionEncodageClient("Le client n'a pu être encodé !");
}

Voilà, l'erreur se produit lors de l'ExecuteScalar.
Aidez moi svp j'ai consulté 1000 sites et rien ne fonctionne, je suis désespéré. Merci bcp d'avance ;)

4 réponses

Electrochip Messages postés 5 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 20 novembre 2004
20 nov. 2004 à 22:15
Ahh, j'ai enfin trouvé la réponse

En fait il fallait absolument spécifier le format de la date dans la requete

Comme ceci:

SqlCommand Requete = new SqlCommand("INSERT INTO [Client](Nom, DateModif) VALUES('" + ClientInfo.Nom + "', '" + DateAjout.ToString("MM/dd/yyyy hh:mm:ss") + "');SELECT @@IDENTITY;", Connexion);

Merci quand même, J'espere que cette réponse poura aider qqun qui a le même problème que moi ;)
3
Blacknight91 Messages postés 77 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 24 avril 2007 1
20 nov. 2004 à 17:18
Bl@cknight

As tu vérifié que ton DateAjout contient la date au bon format ?

un champ SQL au format date, requiert un format valide de la date à savoir ce format ci: jj/mm/aaaa
0
Electrochip Messages postés 5 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 20 novembre 2004
20 nov. 2004 à 17:59
Oui, ma variable contient bien les bonnes valeurs.
Une autre idée ???

Merci d'avance
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
16 déc. 2007 à 10:30
Salut,

Non, il faut utiliser des requêtes paramétrées : http://www.csharpfr.com/tutorial.aspx?id=710

/*
coq
MVP Visual C#
CoqBlog
*/
0
Rejoignez-nous