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 :
je n'ai pas de message d'erreur, mais j'ai 0 ligne modifiée
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); } } }
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:
mais sans résultats...
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+"'");
qqu'un a-t-il une idée d'où peut venir l'erreur ?
merci d'avance
ben
Partager