Remplacer la base de données utilisée

Résolu
yacine_3123 Messages postés 10 Date d'inscription mardi 7 août 2018 Statut Membre Dernière intervention 20 août 2018 - Modifié le 7 août 2018 à 16:41
Whismeril Messages postés 18416 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 juin 2023 - 10 août 2018 à 00:14
Bonjour tout le monde,
Je suis nouveau dans ce forum et débutant dans le monde du VB.net. j'aimerai bien avoir une solution a une erreur sur laquelle j'ai passé bcp de tmps essayant de la résoudre! Je veux ajouter l option importer/exporter la base de donnée. J'ai réussie a écrire le code de l'exportation sans problème, quant à l’importation je l'ai essayé avec le code suivant

OpenFileDialog1.ShowDialog()
        Dim path As String = OpenFileDialog1.FileName
        Dim filename As String = IO.Path.GetFileName(OpenFileDialog1.FileName)

        If File.Exists(filename) Then

            conn.Close()

            IO.File.Delete("nom_bd.db")

            My.Computer.FileSystem.CopyFile(path, filename)

        End If

mais cela m'a donnée l'erreur suivante:
The process cannot access the file 'C:\Users\BRAIN\documents\visual studio 2013\Projects\bibliomine_bis\bibliomine_bis\bin\Debug\bbmine.db' because it is being used by another process.

Merci de votre attention et de votre temps

4 réponses

Whismeril Messages postés 18416 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 juin 2023 624
7 août 2018 à 16:33
Bonjour
Il faut voir que ce n’est pas ton programme qui supprime un fichier, mais windows.
Ton programme ne fait que demander à windows de le faire.
Or windows sait quand un fichier est en cours d’utilisation, quand c’est le cas ça te génère cette erreur, et ne le supprime pas.
De même que tu ne pas peux supprimer un fichier word quand il est ouvert.

Si c’est toi qui a ouvert cette base de données, alors commence par la fermer. La fermeture peut être asynchrone, selon comment tu t’y es connecté. Dans ce cas, il faut attendre que la fermeture soit effective.
0
Whismeril Messages postés 18416 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 juin 2023 624
7 août 2018 à 16:34
Ps, tu as essayé d’utiliser les balises de codes, merci, mais tu ne les a pas correctement insérées.
Voir ici https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
yacine_3123 Messages postés 10 Date d'inscription mardi 7 août 2018 Statut Membre Dernière intervention 20 août 2018
8 août 2018 à 00:16
Merci Whismeril pour ta réponse.

J'ai affiché l'état de la connexion avant la suppression de la base de données et je l'ai trouvé déjà fermé, j'ai effectué cela avec le code suivant:

 OpenFileDialog1.ShowDialog()
Dim path As String = OpenFileDialog1.FileName
Dim filename As String = IO.Path.GetFileName(OpenFileDialog1.FileName)

If File.Exists(filename) Then

MsgBox(co.State)

IO.File.Delete("bbmine.db")
My.Computer.FileSystem.CopyFile(path, filename)

End If


Maintenant je ne voix pas ou est le programme qui utilise la base de donnée.
0
Whismeril Messages postés 18416 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 juin 2023 624
8 août 2018 à 09:39
Bonjour
je t'ai demandé de faire un effort avec la coloration, regarde ton premier message corrigé par Jordanne45 et ton second message.
Lequel est plus facilement lisible?

Il n'y a rien là dedans qui me prouve que le fichier soit fermé.

0
yacine_3123 Messages postés 10 Date d'inscription mardi 7 août 2018 Statut Membre Dernière intervention 20 août 2018
8 août 2018 à 13:24
Bonjour Whismeril

le message box m'affiche zéro qui signifie que la connexion est déjà fermée, c pour cela que je ne savais pas c quoi le programme qui utilise la base de donnée
0
Whismeril Messages postés 18416 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 juin 2023 624
8 août 2018 à 14:32
La connexion peut être fermée sans que le fichier soit libéré
  • le traitement n'est pas forcément synchrone, je te l'ai déjà dit,
  • le ramasse miette n'est pas encore passé
  • il faut faire plus qu'un simple close (Dispose par exemple)...


De plus, un coup la variable c'est conn et un autre coup c'est co.
T'as changer le nom ou tu t'y connectes 2 fois?

Peux tu supprimer ce fichier avec l'explorateur de fichier, quand ton logiciel n'est pas démarré?
Peux tu le faire quand ton logiciel est démarré mais pas encore "normalement" connecté?
Peux tu faire
IO.File.Delete("bbmine.db")
au démarrage de ton logiciel avant toute connexion?


0
yacine_3123 Messages postés 10 Date d'inscription mardi 7 août 2018 Statut Membre Dernière intervention 20 août 2018
9 août 2018 à 22:23
Bonsoir Whismeril

concernant le changement du nom du variable de la connexion cela était juste quand j'étais en train de faire des testes. Finalement j'ai essayé d'applique la méthode dispose au Dataadapter et au Databuilder comme vous m'avez dit et cela a bien marché.
Je te remercii bcp Whismeril de votre aide.
0
Whismeril Messages postés 18416 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 juin 2023 624
10 août 2018 à 00:14
de rien
0