Java : Connection Mysql vers une autre class
Résolu/Fermé
A voir également:
- Java : Connection Mysql vers une autre class
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java décompiler - Télécharger - Langages
16 réponses
sandul
Messages postés
3927
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
723
6 mai 2009 à 13:48
6 mai 2009 à 13:48
En fait, je réécrirais getConnection() genre
++
public java.sql.Connection getConnection() { if (con == null) { // ici le code de connect2MySQL } return con; }et du coup le code est plus clair et connect2MySQL() devient inutile...
++
sandul
Messages postés
3927
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
723
7 mai 2009 à 12:17
7 mai 2009 à 12:17
Non, pas trop...
Il n'est pas exécutable (c'est juste un fragment), il n'est pas formaté & je devrais mettre 3 plombes à comprendre de quoi il s'agit. Désolé, mais pas le temps pour ce faire :(
Il n'est pas exécutable (c'est juste un fragment), il n'est pas formaté & je devrais mettre 3 plombes à comprendre de quoi il s'agit. Désolé, mais pas le temps pour ce faire :(
sandul
Messages postés
3927
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
723
6 mai 2009 à 13:45
6 mai 2009 à 13:45
Salut,
Tu appelles probablement getConnection() avant d'appeler une première fois connect2MySQL(), non ?
++
Tu appelles probablement getConnection() avant d'appeler une première fois connect2MySQL(), non ?
++
madeinloveyou
Messages postés
61
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
22 avril 2010
6 mai 2009 à 14:32
6 mai 2009 à 14:32
Ok merci pour la rapidité de la réponse , je v essayer !!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
madeinloveyou
Messages postés
61
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
22 avril 2010
6 mai 2009 à 14:35
6 mai 2009 à 14:35
Mais le probleme c ke j'utilise onnect2MySQL dans action performed :
public void actionPerformed (ActionEvent e) {
Object source = e.getSource();
if(source == valid){
con = connect2MySQL(login.getText(),password.getText());
}
}
Alors je fais koi dans if(source == valid){ ... ? ... }
j'appell getConnection ??
public void actionPerformed (ActionEvent e) {
Object source = e.getSource();
if(source == valid){
con = connect2MySQL(login.getText(),password.getText());
}
}
Alors je fais koi dans if(source == valid){ ... ? ... }
j'appell getConnection ??
sandul
Messages postés
3927
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
723
6 mai 2009 à 14:52
6 mai 2009 à 14:52
Heu, non, pas vraiment... Tu as une boite de dialogue pour rentrer l'utilisateur et le mot de passe, je n'avais pas fait gaffe ==> getConnection() sans paramètres ne saura pas créer la connexion la première fois. Du coup,
1. Ta solution initale peut être OK à condition de t'assurer que connect2MySQL() est appelé avant le premier appel à getConnection()
2. Ou bien de gérer le fait que getConnection() peut te retourner null
3. Ou bien (si tu peux te permettre d'avoir un GUI dans connect2MySQL():
M'enfin, il y a plein de possibilités :)
++
1. Ta solution initale peut être OK à condition de t'assurer que connect2MySQL() est appelé avant le premier appel à getConnection()
2. Ou bien de gérer le fait que getConnection() peut te retourner null
3. Ou bien (si tu peux te permettre d'avoir un GUI dans connect2MySQL():
public java.sql.Connection getConnection()) { if (con == null) { // con à null ==> demander l'user et le password à l'utilisateur // via un JOptionPane par exemple // Par la suite, le code de connect2MySQL } return con; }
M'enfin, il y a plein de possibilités :)
++
madeinloveyou
Messages postés
61
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
22 avril 2010
6 mai 2009 à 15:04
6 mai 2009 à 15:04
excuse moi je suis pas super douée ta du le remarqué, et suis un peu tétu !!!
je reste un peu buté sur mon code, je comprend pas pourkoi :
si dans
public void actionPerformed (ActionEvent e) {
Object source = e.getSource();
if(source == valid){
con = connect2MySQL(login.getText(),password.getText());
System.out.println("1==> "+con);
// ICI C PAS NULL
}
}
et dé kon sort de la fonction c null
paske dans 1 otre class (Menu) g :
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source == Connex){
ConnectionMySQL connect = new ConnectionMySQL(); // pour créer la connection
con = connect.getConnection();
// MAI LA DU COUP JE LA RECUPERE PAS !!!!
System.out.println("==> "+con);
}
alors ke la variable con a été déclaré en "global", et non en local !!!!
je reste un peu buté sur mon code, je comprend pas pourkoi :
si dans
public void actionPerformed (ActionEvent e) {
Object source = e.getSource();
if(source == valid){
con = connect2MySQL(login.getText(),password.getText());
System.out.println("1==> "+con);
// ICI C PAS NULL
}
}
et dé kon sort de la fonction c null
paske dans 1 otre class (Menu) g :
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source == Connex){
ConnectionMySQL connect = new ConnectionMySQL(); // pour créer la connection
con = connect.getConnection();
// MAI LA DU COUP JE LA RECUPERE PAS !!!!
System.out.println("==> "+con);
}
alors ke la variable con a été déclaré en "global", et non en local !!!!
sandul
Messages postés
3927
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
723
6 mai 2009 à 15:19
6 mai 2009 à 15:19
J'essaie de redire avec en d'autres mots ce que j'ai dit avant:
Tu as une variable con de type membre de la classe X.
1. con n'est pas déclarée avec "static", donc, une fois"X" instanciée et "con" initialisée, il faudra t'assurer de ne pas appeler "con" d'une autre instance de"X".
Exemple:
x1 = new X();
x1.con = new ConnectionMySQL().getConnection();
// ici x1.con sera != null
x2 = new X();
// ici x2.con sera == null
2. Si ce n'est pas ça ton souci (à savoir, pas de nouvelle instance de X créée), l'unique idée qui me trotte par les méninges est la suivante:
Tu as un endroit dans ton code qui fait appel à "con" et "con" est null. Cela signifie tout simplement que la partie de code qui initialise "con" ne s'est pas encore exécutée.
Il m'est difficile de t'en dire plus, car je ne vois pas très bien dans ton code qui fait quoi et ce que tu veux réaliser =)
++
Tu as une variable con de type membre de la classe X.
1. con n'est pas déclarée avec "static", donc, une fois"X" instanciée et "con" initialisée, il faudra t'assurer de ne pas appeler "con" d'une autre instance de"X".
Exemple:
x1 = new X();
x1.con = new ConnectionMySQL().getConnection();
// ici x1.con sera != null
x2 = new X();
// ici x2.con sera == null
2. Si ce n'est pas ça ton souci (à savoir, pas de nouvelle instance de X créée), l'unique idée qui me trotte par les méninges est la suivante:
Tu as un endroit dans ton code qui fait appel à "con" et "con" est null. Cela signifie tout simplement que la partie de code qui initialise "con" ne s'est pas encore exécutée.
Il m'est difficile de t'en dire plus, car je ne vois pas très bien dans ton code qui fait quoi et ce que tu veux réaliser =)
++
madeinloveyou
Messages postés
61
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
22 avril 2010
6 mai 2009 à 15:28
6 mai 2009 à 15:28
con est déclaré tel kel : private java.sql.Connection con = null;
dans mon interface je clique sur "se connecter à la base de données"
ensuite une fenetre apparait pour rentre login + pass ... je valid
=> ca appel la fonction actionPerformed qui appel connect2MySQL ...
là cette fonction renvoie la connection là ya pas de soucis ... mais après plus rien !!!
pi j'ai kune seule connection !!!
dans mon interface je clique sur "se connecter à la base de données"
ensuite une fenetre apparait pour rentre login + pass ... je valid
=> ca appel la fonction actionPerformed qui appel connect2MySQL ...
là cette fonction renvoie la connection là ya pas de soucis ... mais après plus rien !!!
pi j'ai kune seule connection !!!
sandul
Messages postés
3927
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
723
6 mai 2009 à 15:37
6 mai 2009 à 15:37
=> ca appel la fonction actionPerformed qui appel connect2MySQL ...
là cette fonction renvoie la connection là ya pas de souci
1. Cherche dans ton code les occurrences "con = " et assure-toi qu'il n'y a pas d'autre initialisation (pas d'effet de bord)
2. Crée une paire getConnection() et setConnection(). Remplace toutes les utilisations directes de "con" (à part celles dans les méthodes get et set) par des appels à ces deux méthodes. Utilise des breakpoints dans les 2 méthodes pour voir quand "con" est initialisée / accédée / changée.
Good luck,
++
là cette fonction renvoie la connection là ya pas de souci
1. Cherche dans ton code les occurrences "con = " et assure-toi qu'il n'y a pas d'autre initialisation (pas d'effet de bord)
2. Crée une paire getConnection() et setConnection(). Remplace toutes les utilisations directes de "con" (à part celles dans les méthodes get et set) par des appels à ces deux méthodes. Utilise des breakpoints dans les 2 méthodes pour voir quand "con" est initialisée / accédée / changée.
Good luck,
++
madeinloveyou
Messages postés
61
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
22 avril 2010
7 mai 2009 à 10:08
7 mai 2009 à 10:08
C'est bon ... j'ai trouvé !!! oufff
en fait, ce qui posait problème c l'ordre des instructions !
mon programme executait :
1: if (source == Connex){
2: ConnectionMySQL connect = new ConnectionMySQL(); // pour créer la connection
3: con = connect.getConnection();
Seulement lorque j'appel getConnection(); je n'ai pas encore tapé le login et mot de pass
Et lors d'une seconde tentative de connection c bon puisque con a été changé à la fin de l'appel d'avant !
Merci de m'avoir eguillé, tte une après pour ça !! les boules !!!
en fait, ce qui posait problème c l'ordre des instructions !
mon programme executait :
1: if (source == Connex){
2: ConnectionMySQL connect = new ConnectionMySQL(); // pour créer la connection
3: con = connect.getConnection();
Seulement lorque j'appel getConnection(); je n'ai pas encore tapé le login et mot de pass
Et lors d'une seconde tentative de connection c bon puisque con a été changé à la fin de l'appel d'avant !
Merci de m'avoir eguillé, tte une après pour ça !! les boules !!!
sandul
Messages postés
3927
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
723
7 mai 2009 à 10:20
7 mai 2009 à 10:20
:-)
heureux de t'avoir aidé
heureux de t'avoir aidé
madeinloveyou
Messages postés
61
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
22 avril 2010
7 mai 2009 à 11:22
7 mai 2009 à 11:22
mai par contre je c tjs pa commen faire pour tapez une seule fois le mot de pass
paske un while ca me fait beuger le fenetre de connection => peut pas taper login + pwd
???
paske un while ca me fait beuger le fenetre de connection => peut pas taper login + pwd
???
sandul
Messages postés
3927
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
723
7 mai 2009 à 11:44
7 mai 2009 à 11:44
Heu... Difficile de dire de que tu souhaites par là (pas d'exemple avec un while dans ton code posté dans ce thread). Poste un code exécutable et complet de préférence (bon, tu élagues les parties inutiles et gardes la partie qui te pose souci).
++
++
madeinloveyou
Messages postés
61
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
22 avril 2010
7 mai 2009 à 12:12
7 mai 2009 à 12:12
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source == Connex){
ConnectionMySQL connect = new ConnectionMySQL();
// ici le programme pass directement à :
connexion = connect.getConnexion();
// ya pas moyen de faire : tant que connect est "ouvert" (kon a pa fait .dispose(); )
// on attend ....(d'avoir login + pass => getConnection qui retourne 1 valeur et non : NULL )
}
getConnection retourn la connection créer dans la class ConnectionMySQL
ça va comme code ?!?
Object source = e.getSource();
if (source == Connex){
ConnectionMySQL connect = new ConnectionMySQL();
// ici le programme pass directement à :
connexion = connect.getConnexion();
// ya pas moyen de faire : tant que connect est "ouvert" (kon a pa fait .dispose(); )
// on attend ....(d'avoir login + pass => getConnection qui retourne 1 valeur et non : NULL )
}
getConnection retourn la connection créer dans la class ConnectionMySQL
ça va comme code ?!?
madeinloveyou
Messages postés
61
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
22 avril 2010
2 juin 2009 à 17:09
2 juin 2009 à 17:09
du coup pour faire simple g fait une boite de dialog
avec un JTextField et un JPasswordField
la voici pour ceux que ça intéresse :
Merci à tous ceux qui répondent à nos questions ;)
avec un JTextField et un JPasswordField
la voici pour ceux que ça intéresse :
public void Connect2BD(){ String login = null, pwd = null; Object[] message = new Object[4]; message[0] = "Login"; message[1] = new JTextField(); message[2] = "Password"; //Message apparaissant dans le corps du dialog message[3] = new JPasswordField(); // Options (nom des boutons) String option[] = {"Connection", "Cancel"}; int result = JOptionPane.showOptionDialog( null,message,"Connection to MySQL", JOptionPane.DEFAULT_OPTION,JOptionPane.INFORMATION_MESSAGE, new ImageIcon("./logo-inra-small.gif"),option,message[1]); if(result == 0){ pwd = ((JPasswordField)message[3]).getText().toString(); login = (((JTextField)message[1]).getText()).toString(); connect2MySQL(login,pwd); if(!connexion.equals(null)){} } }
Merci à tous ceux qui répondent à nos questions ;)