IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Insertion de données


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2008
    Messages : 119
    Par défaut Insertion de données
    Bonsoir,

    Je fais appel a vous car j'ai un petit problème pour insérer mes données dans ma base de donnée SQL Server (dbShelter.sdf).

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    private void btnOK_Click(object sender, EventArgs e)
            {
                OleDbConnection cnct;
                OleDbCommand cmd;
                String stringConnection = "Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5; Data Source=|DataDirectory|/dbShelter.sdf;";
     
                try
                {
                    cnct = new OleDbConnection(stringConnection);
                    cnct.Open();
                        cmd = new OleDbCommand ("INSERT INTO Customer (Civility, FirstName, Name, AdressL1, AdressL2, " 
                        + "ZipCode, City, Country, TelHome, TelOffice, TelMobile, Fax, Observations, OriginBooking, TypeOf, " 
                        + "Appreciation, DateCreated) "
                        + "VALUES (" + cbCivility.Text + "," + tbFirstName.Text + "," + tbName.Text + "," + tbAdressL1.Text + ","
                        + tbAdressL2.Text + "," + tbZipCode.Text + "," + tbCity.Text + "," + cbCountry.Text + ","
                        + tbTelHome.Text + "," + tbTelOffice.Text + "," + tbTelMobile.Text + "," + tbFax.Text + ","
                        + tbObservations.Text + "," + cbOriginBooking.Text + "," + cbTypeOf + "," + cbAppreciation.Text + ","
                        + dtpDateCreated.Value + ")", cnct);
     
                        cmd.ExecuteNonQuery();
                    cnct.Close(); 
                 }
                 catch(Exception x)
                 {
                     MessageBox.Show(this, x.Message, "Erreur Connexion à la base", MessageBoxButtons.OK, MessageBoxIcon.Error);
                     Close();
                 }
            }
    J'essaye d'insérer un nouvel enregistrement dans ma table Customer à l'aide d'un formulaire. Visual Studio ne me retourne aucune erreur ou exception. Cependant, l'enregistrement ne se fait pas.
    JE ne vois pas ce qu'il me manque ou les oublis.

    PS: Petite précision, je suis un débutant en C#.


    Cordialement.

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    si tu nous donnes pas l'exception (message et numéro de ligne) c'est pas forcément faisable de t'aider ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2008
    Messages : 119
    Par défaut
    J'aimerai bien pouvoir donner une exception (message et numéro de ligne). Mais j'en ai aucune. Ce qui rend la tache compliqué.

    Personne n'a d'idées?

    Cordialement.

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    désolé mal lu
    t'as regardé en pas à pas si tu passes bien partout, et essayé de prendre le string créé pour le tester directement sur la base de données

    (au passage ca se fait pas trop des patés de concaténation come ca, voir dbparameters)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre éprouvé
    Inscrit en
    Mars 2005
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 131
    Par défaut
    Bonjour

    d'une première vue, je vois que les quotes '' sont absents dans votre requête, je m'explique, si on veut insérer dans un champ de type chaine de caractère, on dois écrire la valeur entre deux quotes, donc , ta requête dois ressembler à ça (si j considére que tout tes champs sont des varchars) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     cmd = new OleDbCommand ("INSERT INTO Customer (Civility, FirstName, Name, AdressL1, AdressL2, " 
                        + "ZipCode, City, Country, TelHome, TelOffice, TelMobile, Fax, Observations, OriginBooking, TypeOf, " 
                        + "Appreciation, DateCreated) "
                        + "VALUES ('" + cbCivility.Text + "','" + tbFirstName.Text + "','" + tbName.Text + "','" + tbAdressL1.Text + "','"
                        + tbAdressL2.Text + "','" + tbZipCode.Text + "','" + tbCity.Text + "','" + cbCountry.Text + "','"
                        + tbTelHome.Text + "','" + tbTelOffice.Text + "','" + tbTelMobile.Text + "','" + tbFax.Text + "','"
                        + tbObservations.Text + "','" + cbOriginBooking.Text + "','" + cbTypeOf + "','" + cbAppreciation.Text + "','"
                        + dtpDateCreated.Value + "')", cnct);
    Maintenant y a un autre point , c'est le faite que cette méthode est vraiment très traditionnelle et n'est pas du tout bonne coté sécurité de code (Injection sql) , utilise plutôt les objets command avec les objets parameteres.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2008
    Messages : 119
    Par défaut
    Bonsoir,

    Je reviens vers vous après de nombreuses modifications dans mon code.
    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    string pathBdd = @"Data Source=|DataDirectory|\dbShelter.sdf;Password=;Persist Security Info=True";
     
    ConnexionBdd.Init(pathBdd);
     
    SqlCeCommand cmd = ConnexionBdd.PreparerCommande("INSERT INTO Customer (Civility, FirstName, Name, AdressL1, AdressL2, "
    + "ZipCode, City, Country, TelHome, TelOffice, TelMobile, Fax, Observations, OriginBooking, TypeOf, "
    + "Appreciation, DateCreated) "
    + "VALUES ('" + cbCivility.Text + "','" + tbFirstName.Text + "','" + tbName.Text + "','" + tbAdressL1.Text + "','"
    + tbAdressL2.Text + "','" + tbZipCode.Text + "','" + tbCity.Text + "','" + cbCountry.Text + "','"
    + tbTelHome.Text + "','" + tbTelOffice.Text + "','" + tbTelMobile.Text + "','" + tbFax.Text + "','"
    + tbObservations.Text + "','" + cbOriginBooking.Text + "','" + cbTypeOf.Text + "','" + cbAppreciation.Text + "','"
    + dtpDateCreated.Value + "')");
     
    cmd.ExecuteNonQuery();
    Donc mon problème est le suivant:
    J'essaye d'insérer un nouveau client dans ma table Customer. J'ai un formulaire clients avec un DataGridView qui expose l'ensemble de mes clients. Dans ce formulaire j'ai un bouton "Ajouter client". Lorsque je clique dessus un nouveau formulaire apparaît (il est formé de TextBox, ListBox et de DateTimePicker). J'essaye donc de récuperer mes champs pour les intégrer dans ma requete SQL. Cependant sa ne marche pas. Ma requete marche si je rentre des valeurs directement. C'est à dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO Customer (Colonne1, Colonne2 ....) VALUES ('Mr', 'Sylvain', 'Dupont', ...)

    De plus, Lorsque je ferme mon formulaire (Ajout client) mon DataGridView ne se met pas a jour dans mon formulaire Client. Je suis obliger de fermer le formulaire client et le ré ouvrir. Avez-vous une idée?


    PS: J'ai bien pris en considération le fait qu'une requête SQL paramétré est mieux. J'ai testé mais sa fait le même problème.
    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/05/2004, 14h32
  2. problème d'insertion de données
    Par Falgan dans le forum ASP
    Réponses: 2
    Dernier message: 06/04/2004, 09h29
  3. [Interbase 7] Problème d'insertion de données
    Par Tuscelan dans le forum InterBase
    Réponses: 12
    Dernier message: 19/11/2003, 22h58
  4. insertion de données
    Par m-l dans le forum SQL
    Réponses: 9
    Dernier message: 25/07/2003, 13h59
  5. [Postgresql] pb lors d'insertion de données
    Par bob20000 dans le forum Requêtes
    Réponses: 8
    Dernier message: 04/11/2002, 15h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo