Remplacer la base de données utilisée [Résolu]

yacine_3123 8 Messages postés mardi 7 août 2018Date d'inscription 9 août 2018 Dernière intervention - 7 août 2018 à 15:11 - Dernière réponse : Whismeril 11949 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 10 août 2018 Dernière intervention
- 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
Afficher la suite 

Votre réponse

8 réponses

Whismeril 11949 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 10 août 2018 Dernière intervention - 7 août 2018 à 16:33
0
Merci
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.
Whismeril 11949 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 10 août 2018 Dernière intervention - 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
yacine_3123 8 Messages postés mardi 7 août 2018Date d'inscription 9 août 2018 Dernière intervention - 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.
Commenter la réponse de Whismeril
Whismeril 11949 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 10 août 2018 Dernière intervention - 8 août 2018 à 09:39
0
Merci
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é.

yacine_3123 8 Messages postés mardi 7 août 2018Date d'inscription 9 août 2018 Dernière intervention - 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
Commenter la réponse de Whismeril
Whismeril 11949 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 10 août 2018 Dernière intervention - 8 août 2018 à 14:32
0
Merci
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?


yacine_3123 8 Messages postés mardi 7 août 2018Date d'inscription 9 août 2018 Dernière intervention - 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.
Commenter la réponse de Whismeril
Whismeril 11949 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 10 août 2018 Dernière intervention - 10 août 2018 à 00:14
0
Merci
de rien
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.