Création d'une connexion à une base de données paramétrée

Signaler
-
 cedricsindjui -
Bonjour à tous,
Je cherche à créer dans une form une connexion à une base de donnéeS. Le problème est que la connexion à ma base de données est paramétrée par des variables que je récupères au démarrage de mon application quand on choisit un projet.
Est-ce que quelqu'un a un exemple.
Au démarrage de mon appli je récupère les données
Public database As String
Public dbserver As String
Public project As String
Public Login As String
Je veux donc travailler sur des forms avec une connexion à la bonne base de données l'objectif étant que pour chaque projet il y ait une nouvelle base de données
Le Ced

9 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Salut

Insérer tes variables dans ta chaine de connexion : où est ta difficulté ?

"l'objectif étant que pour chaque projet il y ait une nouvelle base de données"
Mystère et boule de gomme.
Ça ne veut rien dire.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on le partage (Socrate)

Je me suis peut être mal exprimé.
J'ai une base de données type qui sera la même pour tous les projets de mon application. Actuellement je programme mes forms avec des objets graphiques comme les datagrid view et autres. La source de données est en local sur le server SQL de mon PC. Au démarrage de mon application, en fonction du projet choisi sur lequel l'utilisateur veut travailler, des valeurs de serveur, de nom de bases de données sont différentes mais les noms des tables et la structure de la base de données pour chaque projet sont identiques seul le nom et les données contenues dans les tables changent.
Tous les contrôles que j'ai défini dans mon projet s'exécutent actuellement avec une source de données spécifique et paramétrée. Comment faire pour que sur une base de données avec un nom différent ou sur un serveur sql avec un nom d'instance différent que l'application continue de fonctionner?
Le Ced
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Ok, plus détaillé.
Mais je ne vois pas où est ton problème : Au démarrage de ton projet, tu dois bien faire une connexion à ta base de données actuelle, sous la forme d'un objet "Connection" sous ADO.NET ... ?
(excuses, les objets en .Net ayant changés d'appellation par rapport à VB6, je ne suis pas sûr de leur nouveau nom)
Il te suffit donc de modifier cette connexion pour pouvoir attaquer une autre source de données.

Sauf que mon application est une application professionnelle qui va être distribuée sur DVD-ROM. J'ai un fichier ACCESS de base dans mon projet qui contient la liste des projets avec les données sur les serveurs SQL, noms de base de données. Donc la première fenêtre de lancement de l 'application liste ces différents projets et à la sélection d'un, les paramètres de connexion à la Database sont automatiquement mis à jour dans tout le projet.
Voilà ce que je veux faire.
Je ne sais pas si un fichier de configuration ou un fichier ini peut être paramétrée à partir des variables de l'application. Je ne sais pas comment faire pour le créer, la syntaxe, l'utilisation.



Le Ced
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Avant de vouloir stocker dans un fichier ces données, il faut les collecter.
Où se trouvent-ils, ce serveurs ? Sur un réseau privé ?
Sont-ils tous de même type ? de même version ?

As-tu fait fonctionner ton appli avec chacune des 'adresses' de ces serveurs SQL ?
Une fois que tu auras fait ça, tu connaitra les paramètres de connexion à appliquer pour chacun d'eux.
Alors seulement, tu sauras quelles infos stocker ET sous quelle forme.

A mon avis, un fichier INI ou un simple fichier texte fera l'affaire.

L'appli marche quelque soit le serveur puisque les bases de données interfacées ont la même structure seuls les enregistrements diffèrent.
J'ai un petit fichier Access dans mon projet VBNET qui contient comme enregistrement pour chaque projet le nom du serveur, le nom de la base de données. Au démarrage de l'application, la form affiche en pointant localement vers le dossier d'installation cette table projet. C'est après la sélection et validation de l'utilisateur que des variables publiques récupèrent dans la base Access locale le nom du serveur correspondant et la base de données sur laquelle il faut faire des requêtes en fonction des différentes forms des formulaires.
Je cherchais justement un tutorial pour écrire un fichier INI relatif à la connexion de chaque utilisateur en fonction de la base de données choisies pour que tous les objets relatifs aux connexion dans mon projet VB.NET tapent bien sur la bonne base de données.

Le Ced
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Je suis un peu perdu, là.
Au fil de tes réponses, on voit que tu as déjà tout qui fonctionne et je n'arrive pas à cerner quel est ton problème.

Si c'est la gestion d'un fichier INI ou texte, pourquoi tout embrouiller avec tes histoires de serveurs.
Que tu y mettes des listes de serveurs ou le classement du top 50, peu importe; la gestion de ce fichier reste le même.

Quel est ta question ?
Quelle est ta difficulté ?
Quelle réponse n'as-tu pas trouvée parmi les sources ou les questions forum du site ?

Ma question est que:
- Je cherche une aide pour le développement d'une fonction Public Sub ModifChaineConx dont le but est de changer ma chaine de connexion SQL Server à partir des variables que je récupère dans mon application.
J'ai essayé ça
Public Sub ModifChaineConx(ByVal Nomduserveur As String, ByVal Ta_basededonnees As String, ByVal UserIDVar As String, ByVal pwdVar As String)
Try
Dim chaineConnnexion As String
chaineConnnexion = "Integrated Security=true;Data Source=" & Nomduserveur & ";Initial Catalog=" & Ta_basededonnees



Dim conf As System.Configuration.Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
conf.ConnectionStrings.ConnectionStrings("cnxStrName").ConnectionString = chaineConnnexion
conf.Save(ConfigurationSaveMode.Modified)
ConfigurationManager.RefreshSection("connectionStrings")

Catch ex As exception
Messagebox.show(ex.message)
End Try
End Sub


mais ça ne fonctionne pas. Je suis sous VBNET 2012. J'ai 3 erreurs:
Error 1 Type 'System.Configuration.Configuration' is not defined.
Error 2 'ConfigurationSaveMode' is not declared. It may be inaccessible due to its protection level.
Error 3 'ConfigurationManager' is not declared. It may be inaccessible due to its protection level.


Le Ced

J'ai corrigé les erreurs de compilation en ajouter la référence system.configuration à mon projet. Le problème est que cette fonction en marche pas. J'ai beau l'appeler dans le code d'une form mais ça ne fonctionne pas.


Le Ced