Mot de Passe et ID...? hepl me please !! :)

[Résolu]
Signaler
Messages postés
40
Date d'inscription
mardi 15 mai 2012
Statut
Membre
Dernière intervention
11 septembre 2012
-
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
-
Bonjour a tous,

Je solicite votre aide car j'ai un petit probleme pour finaliser mon application...
Je tourne sous VS2010 pour mes deux WinForms & SqlServer2008 pour ma base de données,
J'aimerais récupérer le texte des textBox de ma 1ere WinForm dans la 2ème (jusque là tout va bien) pour les affecter dans ma chaine de connexion à la base de données (là aussi pas de Pb), mais voilà VisualStudio initialise par défaut une autre chaine de connexion où je n'arrive pas à affecter mon mot de passe et mon ID donc j'aimerais savoir si c'est possible de supprimer cette connexion par défaut .... vous me suivez ?

Merci pour votre aide précieuse !
Cokoboye

22 réponses

Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Le code que tu as fonctionne sans ce type de lien, c'est à peu de chose près celui que j'utilise pour toutes mes connexions ;)
Messages postés
40
Date d'inscription
mardi 15 mai 2012
Statut
Membre
Dernière intervention
11 septembre 2012

Ou alors supprimer la chaine de connexion de mon code pour garder celle par défaut et utiliser une propriété que je ne connais pas pour afficher une boite de dialogue login mot de passe....

allé SVP un coup de main
Messages postés
7
Date d'inscription
jeudi 24 mai 2012
Statut
Membre
Dernière intervention
2 juillet 2012

T'as essayé en mettant ta caîne de connxion dans un document XML (.config) que tu appellerais ensuite dans ton code ?
Messages postés
40
Date d'inscription
mardi 15 mai 2012
Statut
Membre
Dernière intervention
11 septembre 2012

Oui j'ai essayer, mais en fait même si je fournis un mauvais mot de passe dans mon XML je me connecte quand même à ma base de donnée, car la chaîne de connexion par défaut prend le dessus....et si je supprime cette chaîne de connexion alors là y'a une dizaine d'erreur de type "SqlConnection n'a pas été initialisé"...
Messages postés
7
Date d'inscription
jeudi 24 mai 2012
Statut
Membre
Dernière intervention
2 juillet 2012

Peux-tu poster ton code ?
Messages postés
40
Date d'inscription
mardi 15 mai 2012
Statut
Membre
Dernière intervention
11 septembre 2012

private static SqlConnection connexion;
private static string cnxStr;
private DataSet ds;

cnxStr = "Data Source=MON-PC\\SQLEXPRESS;Initial Catalog=MyDB;User ID=sa;Password=MonPassword;";

public SqlConnection GetConnection()
        {
            if (connexion null) connexion new SqlConnection(cnxStr);
            if (connexion.State != ConnectionState.Open) connexion.Open();
            return connexion;
        }
        
        public void CloseConnection()
        {
            if (connexion != null)
                if (connexion.State == ConnectionState.Open)
                    connexion.Close();
        }
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Salut,

ce code me rappelle quelque chose
Par contre les fonctions ne sont plus static ?

Comment écris-tu dans la variable cnxStr ? Car là elle est définie en private, elle ne doit donc pas être visible en-dehors de ta classe. Et n'oublie qu'une variable static doit être accédée par MaClass.MaVar, et non MonInstance.MaVar.
Messages postés
40
Date d'inscription
mardi 15 mai 2012
Statut
Membre
Dernière intervention
11 septembre 2012

oui mais j'ai deux autre variable motPass & ID déclaré en public static string qui me permettent de récupérer les textBox.Text de ma form2 et dans ma form2 j'ai

getMotPass{
get{ return textBoxMotPass.Text;}
}

et getID{
get{ return textBoxID.Text;}
}

donc logiquement tout est bon nan ?
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Déjà pour être propre et faire un vrai singleton il faut que tes fonctions soient déclarées en static, et pour être encore plus clean, cette classe ne devrait pas contenir de DataSet (et surtout pas en non static). Il faut également que la variable membre cnxStr soit accessible depuis l'extérieur. Pour cela, soit tu la déclares en public soit tu fais un accesseurs (get/set).

Ensuite, tu devrais initialiser la valeur de cnxStr en même temps que tu la définies (ça c'est plus une question d'esthétique).

Enfin, ma question n'était pas "comment récupères-tu les valeurs saisies depuis ton interface", mais "comment modifies-tu la valeur de cnxStr".
Messages postés
40
Date d'inscription
mardi 15 mai 2012
Statut
Membre
Dernière intervention
11 septembre 2012

cnxStr = "Data Source=MON-PC\\SQLEXPRESS;Initial Catalog=MyDB;User ID=" + motPass + ";Password=" + ID + ";";
Messages postés
40
Date d'inscription
mardi 15 mai 2012
Statut
Membre
Dernière intervention
11 septembre 2012

j'ai inverser les variable ID et motPass...
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Je pense que ton souci provient de ton archi et/ou d'une méconnaissance du cycle d'exécution de ton appli. M'est avis que t'as fusionné la classe de connexion avec une de tes Form et que ta concaténation n'est faite qu'une fois, et peut-être pas au bon moment. Il faudrait l'ensemble du code pour vérifier ça, mais ça va faire lourd ...
Messages postés
40
Date d'inscription
mardi 15 mai 2012
Statut
Membre
Dernière intervention
11 septembre 2012

en effet ça va faire lourd....je vais continuer de creuser, j'ai placé un point d'arrêt dans mon fichier de config Settings.setting, et je vois que la chaine de connexion par défaut s'initialise avant ma chaine de connexion qui se situe dans mon code. Je ne pense pas que ce soit normale...alors comment supprimer cette connection ?
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Si dans le code tu initialise un attribut lors de sa définition, alors, lors de l'exécution, il est initialiser en même temps que tu instancies la classe qui le contient. Dans le cas d'une classe static avec un attribut static, cela est fait dès le lancement du programme. Mais cela n'empêche pas de modifier sa valeur par la suite.

Par contre, pour le coup, l'utilisation d'un singleton de connexion n'est peut-être pas la meilleure solution, ça risque de foutre le while si tu changes de cnxStr en cours d'exécution.
Messages postés
40
Date d'inscription
mardi 15 mai 2012
Statut
Membre
Dernière intervention
11 septembre 2012

Ok mais je sais ça
Je souhaite savoir comment on supprime la connexion XML que Visual Studio initialise lors de l’exécution du programme...
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Tu entends quoi par "connexion XML" ?
Messages postés
40
Date d'inscription
mardi 15 mai 2012
Statut
Membre
Dernière intervention
11 septembre 2012

Je parle de la connexion que visual studio initialise automatiquement...celle qui se trouve dans mon fichier "settings"
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Je n'ai jamais de fichier Settings, je connais pas bien (par contre c'est ta chaine de connexion qui doit y être, pas la connexion elle-même ;))

As-tu utilisé l'interface de VS pour lier ta base de donnée ? Cela pourrait venir d'un truc du genre (je connais pas non plus, je me connecte toujours à la mano sur mes différents SGBD).
Messages postés
40
Date d'inscription
mardi 15 mai 2012
Statut
Membre
Dernière intervention
11 septembre 2012

Oui j'ai utiliser l'interface de visual studio pour lier mes données, et je pense aussi que c'est ça qui fout la m**de...comment tu fais pour lier tes données sans l'interface ? as tu un extrait de code ou mieux(un tuto par exemple) ? pour que j'essai de voir si ça fonctionne mieux
Messages postés
40
Date d'inscription
mardi 15 mai 2012
Statut
Membre
Dernière intervention
11 septembre 2012

Ok donc c'est ça en moins déjà
En ce qui concerne les tableAdapters, les dataSets et les bindings je n'ai qu'à m'inspirer de mes "settings" !

Merci pour votre aide les zamis