Bonjour,
Voici mon code C# :
Lorsque j'essaie d'ajouter une ligne à la table EMAIL par mon application, j'ai l'erreur : Impossible d'insérer une valeur dupliquée dans un index unique. [TABLE name = EMAIL, Constraint name= PK_EMAIL].
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 namespace ProjetKarate { class DAO { public DataTable getDataTable(String sql) { DataSet ds = null; try { conn.Open(); SqlCeCommand cmd = new SqlCeCommand(sql, conn); SqlCeDataAdapter da = new SqlCeDataAdapter(cmd); ds = new DataSet(); da.Fill(ds); return ds.Tables[0]; } catch (Exception x) { MessageBox.Show(x.Message); } finally { if (conn.State == ConnectionState.Open) conn.Close(); } return null; } public LinkedList<MailAddress> getMails() { LinkedList<MailAddress> mails = new LinkedList<MailAddress>(); DataTable dt = getDataTable("SELECT ADRESSE FROM EMAIL ORDER BY ADRESSE;"); for(int i = 0; i < dt.Rows.Count; i++) { mails.AddLast(new MailAddress((String)dt.Rows[i][0])); } return mails; } public LinkedList<MailAddress> saveMail(MailAddress m) { try { conn.Open(); SqlCeTransaction tr = conn.BeginTransaction(); SqlCeCommand cmd = new SqlCeCommand("INSERT INTO EMAIL (Adresse) VALUES('" + "toto@gmail.com" + "');", conn, tr); int res = cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery(); tr.Commit(); } catch (Exception x) { MessageBox.Show(x.Message); } finally { if (conn.State == ConnectionState.Open) conn.Close(); } return this.getMails(); } } }
Lorsque j'essaie par la suite d'insérer la ligne par l'explorateur de sources de données, clic droit sur la table EMAIL, nouvelle requête, je tape la même requête et ça passe.
Quelqu'un peut m'aider svp ?
Partager