Erreur Suppression Données avec SQLite dans C#

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Salut à tous, je suis nouveau dans le forum, et j'aimerai bien que quelqu'un puisse m'aider… au fait, je développe en C#, et j'ai un problème avec la base de données créée en SQLite en ce qui concerne la suppression des données dans une table. Lorsque j'essaye de supprimer une donnée, j'ai ce message d'erreur :

1
2
3
4
5
6
7
8
9
System.Data.SQLite.SQLiteException (0x80004005) : database is locked
database is locked
à System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
à System.Data.SQLite.SQLiteDataReader.NextResult()
à System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
à System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
à System.Data.SQLite.SQLiteCommand.ExecuteNonQuery(CommandBehavior behavior)
à System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
à ProjetAmba.Form6.SupprimerEleve() dans d:\Mes documents privés\Documents Mont-Amba\ProjetAmba\ProjetAmba\Form6.cs:ligne 108

De fois la suppression marche à merveille après quelques temps de repos, mais cette erreur apparait si souvent. Aidez-moi svp car je suis vraiment bloqué et je ne sais comment m'en sortir… le code source pour la suppression est :

 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
public void SupprimerEleve()
        {
            try
            {
                SQLiteConnection connexion = new SQLiteConnection("Data Source = GSMA.db; Version = 3;");
                connexion.Open();
                SQLiteCommand recherche = new SQLiteCommand("SELECT MatriculeEleve FROM Eleve", connexion);
                SQLiteDataReader dr = recherche.ExecuteReader();
                string matricule = "";
                while (dr.Read())
                {
                    if (dr[0].ToString().Equals(txtMatricule.Text))
                    {
                        matricule = dr[0].ToString();
                        break;
                    }
                }
                if ((matricule.Equals(txtMatricule.Text)) && (!txtMatricule.Text.Equals(string.Empty)))
                {
                    SQLiteCommand commande = new SQLiteCommand("DELETE FROM Eleve WHERE MatriculeEleve = '" + txtMatricule.Text + "'", connexion);
                    commande.ExecuteNonQuery();
                    MessageBox.Show("Elève supprimé !", "Suppression Elève", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    if (txtMatricule.Text.Equals(string.Empty))
                    {
                        MessageBox.Show("Entrez un numéro matricule svp !", "Erreur Matricule", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                    else
                    {
                        MessageBox.Show("Ce numéro matricule n'existe pas !", "Matricule inexistant", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
                connexion.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(string.Empty + ex, "Erreur Suppression", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

Merci d'avance pour votre aide…

Édité par Fumble

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte