Bonjour
Je débute avec ADO.net avec une base SQLite qui me sert à charger une DataTable "TableServeurs" que je met comme DataSource d'un DataGridView
Au chargement tout se passe bien
Ensuite j'ai un bouton pour ajouter une ligne
1 2 3 4 5
| DataRow dr = Store.SingletonInstance.TableServeurs.NewRow();
dr["Description"] = textBoxRef.Text ;
dr["HostName"] = textBoxHostName.Text ;
Store.SingletonInstance.AddServeur(dr); |
Dans la classe Store (un singleton) j'ai
1 2 3 4 5 6 7 8
| public void AddServeur(DataRow item)
{
if (TableServeurs != null)
{
TableServeurs.Rows.Add(item);
SaveDataTable(TableServeurs);
}
} |
avec le SaDataTable ainsi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public void SaveDataTable(DataTable DT)
{
try
{
con.Open();
cmd = con.CreateCommand();
cmd.CommandText = string.Format("SELECT * FROM {0}", DT.TableName);
adapter = new SQLiteDataAdapter(cmd);
SQLiteCommandBuilder builder = new SQLiteCommandBuilder(adapter);
adapter.Update(DT);
con.Close();
}
catch (Exception Ex)
{
MessageBox.Show(Ex.ToString(), "Erreur !", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
}
} |
Ca fonctionne parfaitement. idem pour une modification d'une ligne, c'est mis à jour et la base de donnée est bien modifiée avec les changements.
PROBLEME :
pour supprimer une ligne je fais ainsi
Store.SingletonInstance.RemoveServeur(((DataRowView)dataGridView1.SelectedRows[0].DataBoundItem).Row);
Dans Store.cs il y a
1 2 3 4 5
| public void RemoveServeur(DataRow item)
{
TableServeurs.Rows.Remove(item);
SaveDataTable(TableServeurs); //fonctionne pour les ajout et les modifications, pas pour l'effacement d'une ligne.
} |
la ligne est bien supprimée du Datatable mais ne l'est pas dans la base de donnée, pourquoi ???
Merci par avance pour vos explications
Partager