Update SQL depuis un datagridview vers la base de données.

didzym Messages postés 1 Date d'inscription vendredi 3 décembre 2010 Statut Membre Dernière intervention 16 janvier 2012 - 16 janv. 2012 à 09:37
kossigine Messages postés 1 Date d'inscription vendredi 27 janvier 2012 Statut Membre Dernière intervention 27 janvier 2012 - 27 janv. 2012 à 19:27
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:

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();
}

1 réponse

kossigine Messages postés 1 Date d'inscription vendredi 27 janvier 2012 Statut Membre Dernière intervention 27 janvier 2012
27 janv. 2012 à 19:27
...ce n'est pas assez d'avoir l'esprit bon mais de l'exercer bien. R.Descates
0