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 :

update avec paramètres [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut update avec paramètres
    bonjour à tous,

    j'essaie de faire un update dans une base de données, mais je n'arrive pas à le faire avec une requête paramétrée.
    j'ai testé le code suivant :

    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
    30
    31
    32
    private void btnUpdate_Click(object sender, EventArgs e)
            {
                if (cbUpdate.Text != "")
                {
                    string s = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}";
                    OleDbConnection conn = new OleDbConnection(String.Format(s, this.pathDB));
                    using (conn)
                    {
                        try
                        {
                            using (OleDbCommand cmd = new OleDbCommand())
                            {
                                //cmd.CommandText = "update Personnes set Nom = 'A', Prenom = 'B' where Num = 1"; // ok fonctionne
                                cmd.CommandText = "update Personnes set Nom = @nom, Prenom = @prenom where Num = @num";
                                cmd.Connection = conn;
                                cmd.Parameters.AddWithValue("@num", cbUpdate.Text);
                                cmd.Parameters.AddWithValue("@nom", tbUpdateNom.Text);
                                cmd.Parameters.AddWithValue("@prenom", tbUpdatePrenom.Text);
     
                                conn.Open();
     
                                int nb = cmd.ExecuteNonQuery();
                                MessageBox.Show(String.Format("{0} enregistrements modifiés", nb));
                            }
                            conn.Close();
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("bad ! : " + ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                }
    je n'ai pas de message d'erreur, mais j'ai 0 ligne modifiée

    par contre la même chose, mais sans requête paramétrée, cela fonctionne.
    ce code fonctionne parfaitement, mais c'est pas secure...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                                cmd.CommandText = String.Format("update Personnes set Nom = '{1}', Prenom = '{2}' where Num = {0}",
                                                                cbUpdate.Text,
                                                                tbUpdateNom.Text,
                                                                tbUpdatePrenom.Text);

    je me demanddais si il ne s'agissait pas d'un pb de quotes, j'ai donc testé le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                                cmd.Parameters.AddWithValue("@num", cbUpdate.Text);
                                cmd.Parameters.AddWithValue("@nom", "'"+tbUpdateNom.Text+"'");
                                cmd.Parameters.AddWithValue("@prenom", "'"+tbUpdatePrenom.Text+"'");
    mais sans résultats...

    qqu'un a-t-il une idée d'où peut venir l'erreur ?

    merci d'avance
    ben

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut
    Salut,

    Apres une recherche sur le net, il semblerait que OleDbCommand soit bien bien moisi :

    OleDbCommand and OdbCommand does not support named parameters and uses the ? placeholder instead, so the order of the parameters is important. However, you can give names to its parameters instead of using ?, for readability purposes.
    du coup, il faudrait changer l'ordre des paranetre ecris tel que ci-desous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cmd.CommandText = "update Personnes set Nom = @nom, Prenom = @prenom where Num = @num";
    cmd.Connection = conn;
    cmd.Parameters.AddWithValue("@nom", tbUpdateNom.Text);
    cmd.Parameters.AddWithValue("@prenom", tbUpdatePrenom.Text);
    cmd.Parameters.AddWithValue("@num", cbUpdate.Text);

  3. #3
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Il y a parfois des problèmes avec l'ordre des paramètres avec certaines DB.

    On en parle un peu ici : http://stackoverflow.com/questions/1...ese-parameters

  4. #4
    Invité
    Invité(e)
    Par défaut
    excellent, c'était bien ça, il faut respecter l'order !

    merci de votre aide.

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

Discussions similaires

  1. [Débutant] Appel d'une procédure insert ou update avec paramètres
    Par Bakkach dans le forum VB.NET
    Réponses: 17
    Dernier message: 18/04/2013, 14h44
  2. MySqlCommand - Update avec paramètres
    Par oublie13 dans le forum C#
    Réponses: 2
    Dernier message: 19/03/2013, 21h18
  3. [AC-2003] Update avec requête paramétrée
    Par buzz73 dans le forum VBA Access
    Réponses: 2
    Dernier message: 25/08/2009, 19h24
  4. UPDATE avec paramètre
    Par Reno42 dans le forum VBA Access
    Réponses: 6
    Dernier message: 25/11/2008, 09h51
  5. update avec paramètre dans access (pour modifier une image)
    Par salihovic dans le forum Windows Forms
    Réponses: 2
    Dernier message: 17/02/2008, 21h27

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