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