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

JDBC Java Discussion :

Se connecter à une BDD MySQL sous SME Server


Sujet :

JDBC Java

  1. #1
    Membre régulier Avatar de the watcher
    Inscrit en
    Juillet 2003
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 356
    Points : 123
    Points
    123
    Par défaut Se connecter à une BDD MySQL sous SME Server
    Bonjour les amis ;
    Voila 72heures que tente de connecter notre application java (swing) à la bdd mysql sous sme server. Cette application fonctionne bien avec la base locale. J'ai aussi réussi à exporter la base locale vers le serveur via phpmyadmin qui marche très bien. J'ai renseigné les paramètres de connexion comme suit :
    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 class BDConnectMYSQL {
    	private static String url, bdd="ecolexpert";
    	private static String user = "admin";
    	private static String passwd="admin";
     
    	private static Connection connect;
     
    	public BDConnectMYSQL(){
    		super();
    		this.bdd = bdd;
    		this.user = user;
    		this.passwd = passwd;
    	}
    	public Connection getInstance(){
    		 url = "jdbc:mysql:mm:@192.168.2.63:3306:+bdd;
    		if(connect == null){
    			try {
    connect = (Connection) DriverManager.getConnection(url, user, passwd);
    			} catch (SQLException e) {
    				JOptionPane.showMessageDialog(null, e.getMessage(), "ERREUR DE CONNEXION ! ", JOptionPane.ERROR_MESSAGE);
    			}}		
    		return connect;
    	}
    . Malheureusement j'ai le message suivant :
    No suitable driver found for jdbc:mysql:mm:@192.168.2.63:3306:+bdd
    Qu'est-ce qui me manque ?
    L'important n'est pas de tout savoir mais de savoir où tout se trouve !

  2. #2
    Membre chevronné

    Homme Profil pro
    Ingénieur R&D en informatique
    Inscrit en
    Août 2011
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur R&D en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 313
    Points : 1 855
    Points
    1 855
    Par défaut
    Bonjour,

    A mon avis, avant de proposer ma solution, je constate que ton code comporte de nombreux problèmes.

    1)
    public BDConnectMYSQL(){
    super();
    this.bdd = bdd;
    this.user = user;
    this.passwd = passwd;
    }
    Le constructeur de ta classe BDConnectMYSQL appel la méthode super(). Mais pourquoi? puisque ta classe n'étend aucune autre classe. super() est utilisé pour appeler le constructeur d'une classe mère que l'on étend. A moins que tu ne veuilles utiliser le constructeur de la classe Object dont toute classe étend implicitement, je ne vois pas trop l'objet de l'appel de la méthode super(). Je peux me tromper, mais tu peux aussi nous expliquer le pourquoi.

    De plus quand tu utilise des affectations comme this.bdd = bdd, ..., on comprend que tu aurais voulu que c'est l'utilisateur qui rentre ses codes de connexion à la BD pour que ton application les récupère pour passer à ta classe BDConnectMYSQL. Mais le problème c'est que ces variables : bdd, user et passwd, ne sont pas passer en paramètre au constructeur de ta classe. Du coup tes trois affectations sont inutiles et n'ont pas lieu d'être puisque tu les as déjà initialisé à la déclaration.

    2)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    url = "jdbc:mysql:mm:@192.168.2.63:3306:+bdd;
    		if(connect == null){
    			try {
    connect = (Connection) DriverManager.getConnection(url, user, passwd);
    			} catch (SQLException e) {
    				JOptionPane.showMessageDialog(null, e.getMessage(), "ERREUR DE CONNEXION ! ", JOptionPane.ERROR_MESSAGE);
    			}}		
    		return connect;
    	}
    Dans ton code, au niveau de l'url de connexion, tu ouvres un " sans le refermer, ce qui rend le reste de ton code problématique.

    3)

    jdbc:mysql:mm:@192.168.2.63:3306:+bdd
    Enfin, ton url jdbc de connxion à une bd mysql n'est pas bon. Puisque bdd est une variable, tu devrais faire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public Connection getInstance(){
    	url = "jdbc:mysql://192.168.2.63:3306/"+bdd;
    	try {
                  connect = (Connection) DriverManager.getConnection(url, user,   passwd);
                  return connect; 
    	}
            catch (SQLException e) {
    		JOptionPane.showMessageDialog(null, e.getMessage(), "ERREUR DE CONNEXION ! ", JOptionPane.ERROR_MESSAGE);
                    return null;
    	}		
    }
    Le if(connect == null) que tu teste dans la méthode getInstance() ne sert à rien, car tu teste une variable que tu n'as pas encore initialisé. Ce n'est que dans le try que tu lui affecte une valeur. Dans la try, si la connexion se passe bien, alors la valeur de connect ne sera pas nulle. Par contre si ça se passe mal, tu sera automatiquement renvoyé dans le catch, ce qui signifie que la connexion s'est mal passée et que la valeur de connect est forcement nulle. Puisque ta méthode getInstance() doit forcement renvoyer quelque chose, dans ce cas tu renvoie null.

    En espérant t'avoir aidé.

    Cordialement.

  3. #3
    Membre régulier Avatar de the watcher
    Inscrit en
    Juillet 2003
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 356
    Points : 123
    Points
    123
    Par défaut
    Merci beaucoup misterKool;
    En effet mon problème se situait à deux niveaux :
    1 Au niveaux de MYSQL
    2 Au niveau code de la config des paramètres d'accès que tu viens de règler pour moi. Encore merci.

    Pour ce qu est de la bdd, J'ai modifié un peu le fichier my.cnf du serveur SME comme ceci pour ceux qui seront peut-être coincés un jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    pid-file=/var/run/mysqld/mysqld.pid
    basedir=/usr
    datadir=/var/lib/mysql
    skip-innodb
    socket=/var/lib/mysql/mysql.sock
    # skip-networking
    log-error=/var/log/mysqld.log
    max_allowed_packet=16M
    user=mysql
    port=3306
    bind-address=IP_DU_SERVEUR
    Merci à tous et longue vie à DEVELOPPEZ.NET
    L'important n'est pas de tout savoir mais de savoir où tout se trouve !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. java : comment se connecter à une bdd mysql sous SME SERVER
    Par the watcher dans le forum Administration
    Réponses: 0
    Dernier message: 16/09/2011, 19h43
  2. importer une BDD MySQL vers SQL Server 2005
    Par Ajite dans le forum Outils
    Réponses: 3
    Dernier message: 08/10/2007, 19h06
  3. Problème lors d'une connection à une BDD mysql
    Par sissi25 dans le forum JDBC
    Réponses: 4
    Dernier message: 06/04/2007, 18h51
  4. Se connecter à une BDD Mysql à partir du c++
    Par crazydede8 dans le forum Bibliothèques
    Réponses: 4
    Dernier message: 06/05/2006, 01h50
  5. [debutant] connection à une BDD MySQL
    Par Golork dans le forum Bases de données
    Réponses: 1
    Dernier message: 11/03/2005, 17h51

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