Bonjour, cela fait 2 jours que j'essaye de résoudre mon problème qui pourrait paraître simple. Je ne suis que débutant en C#.
Alors voici mon problème: quand je lance l'application, tout s'affiche correctement, mais si j'essaye d'insérer de nouvelles informations, cela ne met pas à jour la base de données, mais le datagridview l'affiche. Le plus étonnant et que si je ferme et relance l'application, les données insérées s'affichent encore, mais à court terme(je relance 10 minutes plus tard je ne les vois plus). J'ai pourtant récupérer les bonnes informations depuis l'élément sélectionné quand on clique sur le bouton "sauvegarder" et je pense avoir mis une bonne requête. Si vous me demandez si j'ai des erreurs, et bien non, aucune.
Merci de bien vouloir m'aider à résoudre ce problème.

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
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
 
public partial class serveurs : Form
{  
        public serveurs()
        {
            InitializeComponent();
 
 
 
            serveursDataGridView.Columns[0].Visible = false;
 
        }
 
 
 
        private void serveursBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            String cnxString = SDP_Connector_2.Properties.Settings.Default.sdp_serversConnectionString;
 
            SqlConnection myConnection = new SqlConnection(cnxString);
 
 
            myConnection.Open();
 
 
            this.Validate();
            this.serveursBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.sdp_serversDataSet);
 
 
 
            var iRows = serveursDataGridView.CurrentRow;
 
 
 
            string[] split = null;
 
            split = iRows.ToString().Split(new char[] { '=', '}' }, 3);
 
            string iRows1 = split[1];
 
            int iRows2 = Convert.ToInt32(iRows1);
 
 
 
 
            SqlTransaction transaction = myConnection.BeginTransaction();
 
 
 
 
            if (iRows2 != -1)
            {
                var id = serveursDataGridView.Rows[iRows2].Cells[0].Value;
                var ip = serveursDataGridView.Rows[iRows2].Cells[1].Value;
                var description = serveursDataGridView.Rows[iRows2].Cells[2].Value;
 
                SqlCommand insert = myConnection.CreateCommand();
 
                insert.CommandText = "INSERT INTO serveurs (ip, description) VALUES (@ip, @description)";
                insert.Parameters.Add("@ip", SqlDbType.VarChar, 20);
                insert.Parameters["@ip"].Value = ip;
                insert.Parameters.Add("@description", SqlDbType.VarChar, 50);
                insert.Parameters["@description"].Value = description;
 
 
                insert.Transaction = transaction;
                insert.ExecuteNonQuery();
                transaction.Commit();
                MessageBox.Show("Sauvegarde effectuée avec succès.");
 
 
            }
 
 
            myConnection.Close();
 
        }
 
        private void serveurs_Load(object sender, EventArgs e)
        {
            // TODO: cette ligne de code charge les données dans la table 'sdp_serversDataSet.serveurs'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
            this.serveursTableAdapter.Fill(this.sdp_serversDataSet.serveurs);
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {            
            this.Close();
        }
}