IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Chemin de la base de donnée


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 52
    Par défaut Chemin de la base de donnée
    Bonjour a tous,
    J'ai créé une application en VB.net qui utilise une base de donnée ainsi que des ressources (son et images). La base de données est interne au logiciel.
    Mon problème est que lorsque j'exporte mon programme et que le je l'installe a l'aide du setup sur un autre ordinateur, le chemin d'accès n'est pas modifié et la base de donnée n'est donc pas trouvée (étant recherchée sur l'ordinateur utilisé lors de la création).

    Comment puis-je faire pour que le chemin de la bdd soit défini automatiquement lors de l'installation du programme?

    Merci, Kikouyou-1080

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 251
    Par défaut
    Plusieurs possibilités :

    - La base de données est située dans le même dossier que l'exécutable. Dans ce cas tu ne précise pas de chemin, juste le nom du fichier. Elle sera ainsi recherchée dans le dossier courant, qui est, par défaut, le dossier de l'exécutable au démarrage de l'application. Cela suppose que le dossier courant ne soit pas modifié au cours du fonctionnement du logiciel

    - La base de données est située dans le dossier de l'exécutable ou dans un sous dossier. Lors de l'accès à la base, tu peux reconstruire dynamiquement le chemin d'accès à la base en récupérant le dossier d'installation actuel de l'exécutable

    - Quelque soit le dossier d'installation de l'exécutable et de la base, tu développe ton logiciel de sorte que le chemin de ta base puisse être configuré une fois le logiciel installé. Tu peux par exemple prévoir un Setting à ton logiciel pour enregistrer ce chemin. Pour l'accès à ta base, tu viendra lire ce setting pour avoir le chemin. Mais après l'installation, il te faudra modifier le fichier de configuration de ton executable pour indiquer le chemin correct de la base.

    La 1ere solution est la plus simple, mais ne garantie pas un fonctionnement sans faille.
    La 3ème est la plus propre et la plus souple, mais aussi la plus contraignante pour la phase d'installation.
    La 2nd solution est un compromis.

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 52
    Par défaut
    Citation Envoyé par sevyc64 Voir le message
    Plusieurs possibilités :

    - La base de données est située dans le dossier de l'exécutable ou dans un sous dossier. Lors de l'accès à la base, tu peux reconstruire dynamiquement le chemin d'accès à la base en récupérant le dossier d'installation actuel de l'exécutable
    Je pense utiliser cette methode.
    Actuellement, la base de données, les images ainsi que les sons sont dans le sous dossier Resources.
    Le chemin dans les propriété d'un des fichier de "Resources" est noté en gris et est complet : C:\Users\Kikouyou\Documents\dossier\dossier\dossier\dossier\dossier\dossier\Resources\bdd.accdb

    J'ai l'impression que lors de la publication de l'application il n'intègre pas les resources, et continu a tout chercher en suivant le chemin précèdent.

    Comment puis-je récupérer dynamiquement le chemin des ressources?

    Merci

  4. #4
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 251
    Par défaut
    lorsque tu fais ton package de publication, il faut que tu dise d'intégrer ces fichiers et où les copier. C'est là que tu vas définir un sous-dossier de l'emplacement de l'exécutable.

    Regarde ce lien concernant le paramétrage des propriétés de chaque fichier pour qu'ils soient inclus à ta publication :

    http://msdn.microsoft.com/fr-fr/library/0c6xyb66.aspx

  5. #5
    Rédacteur
    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Billets dans le blog
    121
    Par défaut
    Citation Envoyé par Kikouyou1080 Voir le message
    Bonjour a tous,

    Comment puis-je faire pour que le chemin de la bdd soit défini automatiquement lors de l'installation du programme?

    Merci, Kikouyou-1080
    Faut utiliser une référence relative regarde un peu cette methode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AppDomain.CurrentDomain.BaseDirectory
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 52
    Par défaut
    Citation Envoyé par sevyc64 Voir le message
    lorsque tu fais ton package de publication, il faut que tu dise d'intégrer ces fichiers et où les copier. C'est là que tu vas définir un sous-dossier de l'emplacement de l'exécutable.

    Regarde ce lien concernant le paramétrage des propriétés de chaque fichier pour qu'ils soient inclus à ta publication :

    http://msdn.microsoft.com/fr-fr/library/0c6xyb66.aspx
    Ok, alors, si j'ai bien compris, je choisi :

    Build Action : Embedded Resource
    Copy to Outpout Directory : Copy Always
    Custom tool :
    Custom tool Namespace : Resources\
    File Name : NomBdd.acdb
    File Path : le chemin actuel du fichier

    Et ce pour chacun des fichiers (images, son et bdd) de ressources, c'est bien ça?

    Merci.

  7. #7
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 251
    Par défaut
    Cela dépend en fait de ce que tu veux faire de tes fichiers.

    Personnellement, lorsque je veux que certains fichiers suivent mon executable mais qu'ils soient réellement présent comme fichier sur le disque, je prend

    Action de génération : Contenu
    Copier dans le répertoire de sortie : Toujours copier ou Copier si plus récent si c'est un fichier que le logiciel peut modifier (ex : ta base de données). Ça permet de ne pas réécraser le fichier et de conserver les modifications faites par le logiciel entre chaque session de debbugage
    le reste j'y touche pas.

    Attention, si tu as ajouter tes images par l'éditeur de ressources, celui-ci t'as automatiquement paramétrer les fichiers pour qu'ils soient incorporés à l'executable. Dans ce cas, il n'est pas nécessaire de copier tes fichiers sur le disque. Mais il ne faut pas, par contre dans ton code y acceder comme si tu ouvrais un fichier. Il faut passer par les ressources de l'application.

    Si par contre, tu as vraiment besoin des fichiers sur le disque (cas de la bdd par ex), il ne faut pas les inclure par l'éditeur de ressources, ça ferait doublon et ça fera grossir l'exécutable pour rien.

  8. #8
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 52
    Par défaut
    Ok, pour ce qui est des images et sons, je les ai ajouté avec l'éditeur de ressource, je ne modifie donc pas leur propriété, et je les appelle bien en utilisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    My.Resources.NomFichier
    Quant a la bdd, je ne l'avais pas ajoutée correctement, en effet, j'avais ajouté l'objet "OleDbConnection" pointant sur la même base sur chaque formulaire l'utilisant.

    J'ai donc supprimé chacun des objets pour l'ajouter globalement depuis la barre d'outils: Data/add new data source.

    Là j'ai pu choisir de l'ajouter au projet et de la copier toujours.
    A présent, je pense qu'elle est bien introduite, il me reste a modifier chaque appels a ma base qui ne fonctionnent plus!

    j'utilisais le systeme suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
     'DataBase
        Public ligne As Boolean 'pointeur pour le DataReader
        Public Requete As New OleDb.OleDbCommand
        Public Donnee As OleDb.OleDbDataReader
     
     Sub CreationListeMot()
            frmPartie.oCnxOrthoMot.Open() 'Ouverture de la connexion a la base
            With Requete 'Edition de la requete
                .Connection = frmPartie.oCnxOrthoMot
                .CommandText = "SELECT Mot FROM Dictionnaire WHERE NombreDeLettres = " & nbLettreChoisi
            End With
            Donnee.Close() 'Fermeture du resultat de la dernière requete
            Donnee = Requete.ExecuteReader 'execution de la requete
            ligne = Donnee.Read
            Dim indice As Integer = 0
            ReDim ListeMot(NbTotalMotNbLettreChoisi - 1) 'On redimensionne le tableau de Liste
            While ligne = True 'tant qu'il y a un résultat
                ListeMot(indice) = (Donnee("Mot")) ' On ajoute le mot dans la liste
                ligne = Donnee.Read() 'On lit le résultat suivant
                indice = indice + 1
            End While
            frmPartie.oCnxOrthoMot.Close() 'Fermeture de la connexion a la base
        End Sub
    Je crois que la méthode que je dois suivre est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [Visual Basic] 
    Private Sub GetRows()
       Dim myRows() As DataRow
       Dim myTable As DataTable
       ' Get the DataTable of a DataSet.
       myTable = DataSet1.Tables("Suppliers")
       myRows = myTable.Select()
       Dim i As Integer
       ' Print the value one column of each DataRow.
       For i = 0 to myRows.GetUpperBound(0)
          Console.WriteLine(myRows(i)("CompanyName"))
       Next i
    End Sub
    Merci.

  9. #9
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 52
    Par défaut
    Je ne sais pas comment utiliser mon data set, les quelques documents que j'ai pu lire parlaient d'un systeme de requête diffèrent de SQL : link.
    Est-il nécessaire d'utiliser SLQ ou on peut utiliser SQL pour les requêtes vers un data set?

  10. #10
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 251
    Par défaut
    Linq est une autre méthode de requetage pas limité à SQL d'ailleurs. Elle simplifie des choses, peut en compliquer d'autres mais ne remplace pas tout.
    Elle nécessite surtout de penser différemment son code

    Mais tu peux tout à fait les requetes SQL classique.

    Pour savoir comment utiliser ADO.Net réfère toi par exemple aux tutoriels présent sur le site comme par exemple celui-ci sur l'utilisation du Dataset :

    http://dotnet.developpez.com/articles/ado2/vbnet/

  11. #11
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 52
    Par défaut
    Bonjour, merci pour cette réponse supplémentaire!

    Je me suis tourné vers le lien, et j'ai l'impression que je me prends la tête pour pas grand chose!

    En effet, a la base, j'ai plusieurs formulaires qui intègrent l'objet "OleDbConnection" vers une bdd Access 2007. Lors de l'exécution, toutes les requêtes sont correctement exécutées. Le problème est que lors de la publication, la base de donnée n'est pas intégrée au build.

    J'ai trouvé comment ajouter le fichier access au build mais je n'arrive pas a modifier mes objets "OleDbConnection" pour qu'ils pointent vers le fichier access qui est integrée au programme lors de la publication.

    Je ne dois donc pas avoir nécessairement besoin d'utiliser le dataset, mais simplement de trouver le moyen de modifier la cible.

  12. #12
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 251
    Par défaut
    On en revient donc à ma toute première réponse

    Pour les solutions 1 et 2, tu peux définir le chemin de ta base en dur dans ton objet OleDBConnection

    Pour la solution 3, il faudra donc par le code recalculer le chemin de ta base et l'affecter à ton objet oledbconnection

Discussions similaires

  1. Dataset, chemin de la base de données
    Par sanfour_walhan dans le forum Windows Forms
    Réponses: 2
    Dernier message: 08/02/2008, 10h58
  2. chemin de la base de donnes
    Par sanfour_walhan dans le forum VB.NET
    Réponses: 3
    Dernier message: 23/09/2007, 18h05
  3. chemin reseau pour Base de donnée
    Par LeXo dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 19/10/2006, 11h15
  4. databasename, définir le chemin de la base de données sous builder
    Par didier17062006 dans le forum C++Builder
    Réponses: 1
    Dernier message: 13/10/2006, 16h30
  5. Réponses: 1
    Dernier message: 22/09/2005, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo