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 :

Programme de connexion à une base


Sujet :

JDBC Java

  1. #1
    En attente de confirmation mail
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Points : 96
    Points
    96
    Par défaut Programme de connexion à une base
    Bonjour,

    Désolé de vous envoyer de la lecture mais voici :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    import java.sql.*;
    import java.io.*;
     
    public class CBaseDonnees {
    	public static void main(String args[]) {
     
    		String URL = "jdbc:mysql://localhost:81/ouvrage";
    		String nomdutilisateur ="moi";
    		String motdepasse ="meme";
    		//chargement du pilote
     
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
    		}
    		catch(Exception e) {
    			System.err.println("le pilote n'est pas chargé");
    			return;
    		}
    		//connexion à la base de données
    		Statement commande = null;
    		Connection connexion = null;
    		try {
    			connexion = DriverManager.getConnection(
    						URL,
    						nomdutilisateur,
    						motdepasse);
    		commande = connexion.createStatement();
    		}
    		catch(Exception e) {
    			System.err.println("La connexion " + URL + "ne peut pas être établie");
    			}
    		// lecture des données
    		try {
    			ResultSet entites;
    			entites = commande.executeQuery("SELECT * FROM exemple;");
    		// affichage des entetes
    		Console cons = System.console();
    		cons.printf("\n");
    		cons.printf("nom \t prenom \n");
    		cons.printf("\n");
     
    		// afichage de chaque entite
     
    		String nom;
    		String prenom;
     
    		while(entites.next())
    			{
    			nom = entites.getString("nom");
    			prenom = entites.getString("prenom");
    			cons.printf(" %s \t\t %s \n", nom, prenom);
    			}
    		connexion.close();
    		}
    		catch(Exception e) {
    			e.printStackTrace();
    			}
    		}
    	}
    La base de donnée est créee avec PhpMyAdmin, WampServer 2
    le message me dit que le pilote n'est pas chargé
    Je suis sous Windows Vista
    La variable CLASSPATH contient le mysql-connector
    localhost:81 est mon port pour apache

    Pouvez vous m'aider, c'est mon premier prog java de connexion à une base (simple affichage)

    Merci beaucoup

  2. #2
    Membre confirmé
    Avatar de Khaled.Noordin
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 354
    Points : 497
    Points
    497
    Billets dans le blog
    1
    Par défaut
    salut essaye 3306 comme numéro de port

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    On est au chargement du driver, bien avant la connexion. Alors dans l'ordre

    Que tu attrape une exception, prend l'habitude de toujours attraper des exceptions spécifiques et non une exception générique.
    De la même manière, prend l'habitude d'afficher la stacktrace de l'erreur plutot qu'un message bidon, c'est très utile pour débugger.

    Concernant ton driver, il faut supprimer ta variable d'environnement CLASSPATH, c'est une mauvaise idée de jouer avec ça. Si tu es dans un ide, content toi d'ajouter le driver à ton projet. Si tu travaille en console, le paramètre -cp de javac et de java servent à ajouter des librairies à l'application.

  4. #4
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    Avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 043
    Points : 2 560
    Points
    2 560
    Par défaut
    Bonjour,
    pour détailler ce que Khaled.Noordin et tchize_ ont dit, c'est que:

    1°) dans l'url JDBC, c'est le port du serveur de base de données (MYSQL) qu'il faut donner, et non pas le port de ton serveur apache où tourne phpmyadmin
    c'est mysql le serveur, ... phpmyadmin n'est qu'un outil pour t'aider à administrer tes bases de données (fais attention à ne pas confondre cela ^^) ....
    Et donc, sachant que le port par défaut d'un serveur MYSQL, c'est 3306, tu dois l'utiliser comme te l'as spécifié Khaled. Voire plus simple encore, vu que tu n'a pas changé le port par défaut du serveur MYSQL, tu peux directement même éviter de mettre explicitement le numéro de port, et JDBC se chargera d'utiliser directement le port par défaut pour le driver choisi (dans ton cas, c'est le driver JDBC)
    N'hésite pas à faire un tour dans la FAQ JDBC

    2°) Lorsque tu catches une exception comme ceci System.err.println("La connexion " + URL + "ne peut pas être établie"); tu ne récupères aucune information sur l'exception générée, tu aurais dû AU MOINS faire un truc comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    System.err.println("La connexion " + URL + "ne peut pas être établie : " + e.getMessage(););
    e.printStackTrace(System.err);
    Mais même cela encore, n'est pas souhaite dans ta situation, car cela signifie que tu catches l'exception, tu affiches un message d'erreur, ..... MAIS tu laisses le code continuer comme si tout s'était bien passé alors qu'il n'y a aucun intérêt à vouloir parcourir ta base de données et tables si la connexion elle même ne s'est pas passée
    Donc, à titre d'exemple, tu aurais dû faire un truc dans le genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    String errMsg = "La connexion " + URL + "ne peut pas être établie" + e.getMessage();
    System.err.println(errMsg);
    // e.printStackTrace(System.err);
    throw new Exception(errMsg, e);
    AInsi tu verrais la trace de l'exception, et ton code s'arrêterait à cause de l'exception relancée.

    Cordialement,
    Nous n'héritons pas de la terre de nos parents, nous l'empruntons à nos enfants.
    Le chat du site est aussi ici pour aider. Ne pas hésiter à visiter !

  5. #5
    En attente de confirmation mail
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Points : 96
    Points
    96
    Par défaut
    Désolé de répondre aussi tardivement, j'ai un souci Internet, je me connecte donc d'ailleurs en attendant.
    Je vais étudier sérieusement tout ce que vous m'avez dit

    et particulièrement :
    de PAISSAD :

    1°) dans l'url JDBC, c'est le port du serveur de base de données (MYSQL) qu'il faut donner, et non pas le port de ton serveur apache où tourne phpmyadmin
    c'est mysql le serveur, ... phpmyadmin n'est qu'un outil pour t'aider à administrer tes bases de données (fais attention à ne pas confondre cela ^^) ....
    Et donc, sachant que le port par défaut d'un serveur MYSQL, c'est 3306, tu dois l'utiliser comme te l'as spécifié Khaled. Voire plus simple encore, vu que tu n'a pas changé le port par défaut du serveur MYSQL, tu peux directement même éviter de mettre explicitement le numéro de port, et JDBC se chargera d'utiliser directement le port par défaut pour le driver choisi (dans ton cas, c'est le driver JDBC)
    N'hésite pas à faire un tour dans la FAQ JDBC

    Ceci dit, en local, sans internet donc vu que je suis en rade de ce coté, j'ai réussi à obtenir qyuelque chose qui marche mon programme tourne donc.

    Les modifications effectuées sont :

    localhost et pas localhost:81

    mot de passe : "" (pas de mot de passe)

    Encore, merci, je fouillerais dans vos conseils dès mon retour chez moi


    Philippe

    PS : j'ignorais que ce n'était pas le port d'Apache qu'il fallait donner, là je te remercie tout particulièrement ainsi que Khaled, j'étais dans l'erreur.
    Etrangement, le fait de ne pas changer le port par défaut marche aussi, mais dans le menu de localhost du pamplemousse après son appel il faut cependant ajouter :81 manuellement dans la barre d'adresse.
    Mais là ce n'est plus le bon forum, je suppose.

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/04/2009, 09h46
  2. Problème de connexion à une base access
    Par caco19 dans le forum ASP
    Réponses: 4
    Dernier message: 13/08/2004, 16h19
  3. [JSP] Connexion à une base mysql
    Par Jovial dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 20/04/2004, 14h04
  4. Réponses: 3
    Dernier message: 29/03/2004, 18h02
  5. Connexion à une base SQL_Serve via Internet
    Par Yoann_D dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 22/07/2003, 15h39

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