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

Windows Forms Discussion :

Faire un connectionstring dynamique.


Sujet :

Windows Forms

  1. #1
    Membre éprouvé

    Homme Profil pro
    kiné passionné de dev
    Inscrit en
    Mars 2006
    Messages
    1 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : kiné passionné de dev

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 570
    Billets dans le blog
    1
    Par défaut Faire un connectionstring dynamique.
    Bonjour à tous.

    voilà mon problème, je fais un programme de gestion des média, pour l'instant il est individuel, c'està dire que j'ai un prog et une base par personne. Je passerais au client serveur quand cette version fonctionnera correctement.

    Bref, voici mon problème, je n'arrive pas a avoir un connectionstring qui fonctionne et pour les SQL server et pour les SQL server express.

    Car, la subtilité, c'est :
    - pour sql on a datasource = Nomduserver
    -pour sql express on a Nomduserver\SQLexpress

    Alors j'ai essayé de faire un code mais ça ne marche pas.
    Et je suppose qu'à chaque fois, le server a le nom du pc.

    Voici ce que j'ai fait:

    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
    Public Sub configconnectionstring()
            Dim key As Microsoft.Win32.RegistryKey = My.Computer.Registry.LocalMachine.OpenSubKey("Software\Médiathèque", True)
            If key Is Nothing Then
                Dim ar As DataTable
                ar = Sql.SqlDataSourceEnumerator.Instance.GetDataSources
                Dim computername As String = My.Computer.Name
                Dim datasource As String = ""
                For Each row As DataRow In ar.Rows
                    If row.Item(0).ToString = computername Then
                        If row.Item(1).ToString <> "" Then
                            datasource = computername + "\" + row.Item(1).ToString
                        Else
                            datasource = computername
                        End If
                        Exit For
                    End If
                Next
     
                Dim rc As Microsoft.Win32.RegistryKey = My.Computer.Registry.CurrentUser.OpenSubKey("Software", True).CreateSubKey("Médiathèque")
                rc.SetValue("Connectionstring", "Data Source=" & datasource & ";AttachDbFilename=|DataDirectory|\Médiathèque.mdf;Initial Catalog=;Integrated Security=True;User Instance=True")
                ar.Dispose()
            End If
        End Sub
    et le problème de cette technique c'est que c'est long...

  2. #2
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    744
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2004
    Messages : 744
    Par défaut
    Ne pourrais tu pas mettre une connectionString dans ton fichier de config de l'application et la modifier suivant que l'application tourne sur SQL 2005 ou SQL 2005 express ?
    Envie de contribuer à la rubrique SharePoint ? Contactez moi par MP !

    SharePoint : http://sharepoint.developpez.com
    Mon site : http://lefortludovic.developpez.com
    Mon blog : http://www.consultpoint.net/blog

  3. #3
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 184
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 184
    Par défaut
    Bonjour.

    Est-ce qu'on ne pourrait différencier à partir de la Version fournit via Sql.SqlDataSourceEnumerator.Instance.GetDataSources() ?

    Je n'ai pas SQL Server Express donc je ne peux pas tester.

    Cdt.

  4. #4
    Membre éprouvé

    Homme Profil pro
    kiné passionné de dev
    Inscrit en
    Mars 2006
    Messages
    1 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : kiné passionné de dev

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 570
    Billets dans le blog
    1
    Par défaut
    en effet on peut savoir si c'est express ou pas.

    avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim ar As DataTable
                ar = Sql.SqlDataSourceEnumerator.Instance.GetDataSources
                ar.rows.items(1)

  5. #5
    Membre éprouvé

    Homme Profil pro
    kiné passionné de dev
    Inscrit en
    Mars 2006
    Messages
    1 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : kiné passionné de dev

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 570
    Billets dans le blog
    1
    Par défaut
    Enfin, on peut le savoir, mais je n'arrive pas a le faire fonctionner correctement, en plus, ça prend du temps et ça fait planter mon appli, si on ouvre la fenetre principale trop tot, car mon appli se lance, et il n'y a qu'un icon en bas qui s'affiche.

    Bref, chez moi ça marche, ça me met: datasource='nomdemonpc\SQLEXPRESS'
    Et chez un autre qui a SQL serverur, ça met : datasource=''

    Alors, je ne vois psa trop comment faire...

  6. #6
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Bonjour,

    Je sais pas si c'est possible mais on pourrait également imaginer quelqu'un qui ait SQL Server et SQL Server Express sur sa machine. Quelle version choisir dans ce cas ?

    Si jamais ce cas peut se présenter mais bon, fallait bien y passer ^^.

    Griftou.

  7. #7
    Membre éprouvé

    Homme Profil pro
    kiné passionné de dev
    Inscrit en
    Mars 2006
    Messages
    1 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : kiné passionné de dev

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 570
    Billets dans le blog
    1
    Par défaut
    Mouai, ça m'étonnerais, je pense qu'ils ne peuvent pas etre tout les deux en même temps sur le même poste....

    En plus, ce serait débile!

    Bref, ça ne répond pas à ma question...

    Mais merci quand même!

  8. #8
    Membre très actif
    Avatar de Cyrilange
    Profil pro
    Inscrit en
    Février 2004
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 268
    Par défaut
    Pour commencer, quand un code est long à s'éxécuter le bon réflex est de le mettre dans un autre Thread. Un BackGroundWorker serait peut être une bonne idée et empècherait ton appli de planter.
    Ensuite tu peux tester si ton BackGroundWorker.IsBusy pour savoir si tu peux déclencher le code qui accède aux données, ou non. Ou alors tu peux déclencher un Event à la fin du Thread pour signaler au reste de l'application que la Base de donnée est prête à travailler.
    Et pour faire jolie tu peux mettre une petite anime avec un petit message du genre "Connexion en cours merci de patienter..." pour pas que l'utilisateur se pende pendant que le Thread s'éxécute

  9. #9
    Membre éprouvé

    Homme Profil pro
    kiné passionné de dev
    Inscrit en
    Mars 2006
    Messages
    1 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : kiné passionné de dev

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 570
    Billets dans le blog
    1
    Par défaut
    oui, c'est ce que je pensais pour l'affichage de la fenêtre.

    Mais, mon application ne se fige pas, mais comme la clé registre n'est pas encore faite, c'est ma forme principale, quand je l'ouvre qui fait planter car pas encore le connectionstring

    Mais, je ne sais toujours pas comment adapter mon prog à SQL et SQLexpess...

  10. #10
    Membre très actif
    Avatar de Cyrilange
    Profil pro
    Inscrit en
    Février 2004
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 268
    Par défaut
    C'est bien pour cela que tu dois faire un Thread et ne pas utiliser ta ConnectionString tant que le Thread n'est pas terminé.

Discussions similaires

  1. [VB.NET] ConnectionString dynamique et DataSource "statique"
    Par apoingsfermes dans le forum Windows Forms
    Réponses: 1
    Dernier message: 22/08/2006, 14h58
  2. faire un menu dynamique
    Par Phiss dans le forum ASP
    Réponses: 5
    Dernier message: 18/05/2006, 15h01
  3. Comment faire un lien "dynamique" de tables??
    Par fram069 dans le forum Access
    Réponses: 1
    Dernier message: 10/04/2006, 13h43
  4. Comment faire une connexion dynamique à une base avec ADO?
    Par Borisam dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/03/2006, 14h22
  5. [Javascript] Faire un menu dynamique
    Par jenny50 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 28/02/2006, 12h11

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