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

Java Discussion :

Connexion à une base de données dans mon propre ordi


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut Connexion à une base de données dans mon propre ordi
    Bonjour,

    Je rencontre une difficulté dans la compréhension des guides, aides et autres faq.
    Je souhaite lier une base de données à un programme java que je suis en train d'écrire tant bien que mal.
    Pour lier cette BDD au programme, il est expliqué dans le FAQ qu'il faut d'abord se connecter.... normal !

    Mais je ne comprends pas pourquoi ceci est toujours expliqué en admettant que la base de données est sur un serveur.
    On voit bien dans le code qui suit (issu du FAQ) que l'url est demandée. Mais que faire pour connecter mon prgramme java sur une bdd située sur le même ordi où le programme sera en fonction ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    String url = "url";
    String login = "log";
    String password = "pass";
    try{
      Connection connection = DriverManager.getConnection(url,login,password);
      //interaction avec la base
    }
    catch(SQLException sqle){
       //cf Comment gérer les erreurs ? 
    }
    finally{
       //cf Comment bien fermer une connexion ?
            }
    Merci pour vos éclairages !!

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Par défaut
    Citation Envoyé par francky74 Voir le message
    Mais que faire pour connecter mon prgramme java sur une bdd située sur le même ordi où le programme sera en fonction ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String url = "localhost";
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String url = "127.0.0.1";

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut connect bdd java
    Bonjour,

    Merci beaucoup pour cette réponse.

    Est-ce que j'ai besoin de connecter à chaque fois que je dois envoyer une requête ou est-ce que l'on se connecte une fois au début du programme et qu'on se déconnecte à la fin ?

    Y a-t'il un moyen de vérifier que l'on a bien connecté son programme java à la bdd ?

    >Merci à vous !

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    L'établissement d'une connexion à une base de données est relativement lent : si tu as besoin de faire beaucoup de requêtes et de réactivité, tu as intérêt à avoir une connexion unique, ouverte donc au début de l'application, et fermée à la fin.

    Cependant, il faut prendre en compte d'autres arguments : premièrement, une connexion peut se fermée (par exemple, tu peux avoir besoin de redémarrer ton SGBD pendant que ton application tourne, ou il peut planter). Secondement, ton application peut avoir besoin de faire plusieurs requêtes simultanées (avec une seule connexion, toutes les requêtes seront obligatoirement consécutives, et donc s'attendre les unes les autres, ce qui peut être gênant également à l'usage de l'application, même si, la plupart du temps, les requêtes sur une base de données bien faite vont tellement vite, qu'on n'attends pas vraiment, mais ça peut entraîner un sentiment que parfois il y a comme des petits blocages (tout dépend la fréquence des requêtes).

    Ce sera, pour gérer ces deux problématiques, beaucoup plus simple d'établir une connexion pour chaque requête et de la fermer à la fin, mais les temps de réaction de l'application peuvent en être grandement augmentés.

    Sinon, pour le premier cas, tu as intérêt à faire une classe qui fournit une méthode getConnexion() et que cette méthode ouvre la connexion si elle ne l'est pas déjà : ainsi, si la connexion est rompue, elle se refera automatiquement lorsqu'on en a de nouveau besoin, si, bien sûr la base est disponible à ce moment. Et pour le second cas, on utilise ce qu'on appelle un pool : un ensemble de plusieurs connexions. Mais bon, tu verras à l'usage si tu as besoin d'en arriver là. Ça dépend vraiment de la façon que ton application travaille avec la base.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut
    Bonsoir !

    Merci pour ces réponses très intéressantes.

    J'ai l'impression que de se connecter à une bdd est une tâche fastidieuse .... Je m'explique :

    Je fait un prog java (voici plus bas) sur NetBeans et j'ai une BDD crée sur BASE (libre office).

    Je dois donc utiliser ODBC et MySQL.

    Pour 'linstant j'ai ce code ci :
    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
    package connect;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.util.Enumeration;
    import java.util.Properties;        
     
    /**
     *
     * @author francky
     */
    public class Connect {
     
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            try{
                Class.forName("//127.0.0.1:5432/kimilie/BDD/Cuisine_v3.odb");
                System.out.println("Driver OK !");
     
                String url = "localhost";
                String user = ("");
                String passwd = ("");
     
                Connection conn = DriverManager.getConnection(url, user, passwd);
                System.out.println("Connection effective !");
            }
            catch (Exception e){
            e.printStackTrace();
        }
        }
    }
    Mais j'obtiens des erreurs avec ce code ! Et puis je ne sais même pas quels sont les identifiants et pots de passe à utiliser ????
    Voici les erreurs éditée par NetBeans lors du RUN (oui, du run car ca compile bien) :
    run:
    java.lang.ClassNotFoundException: //127.0.0.1:5432/kimilie/BDD/Cuisine_v3.odb
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:190)
    at connect.Connect.main(Connect.java:23)
    BUILD SUCCESSFUL (total time: 0 seconds)

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Tu as mis l'url de ta base en lieu et place du nom de la classe de pilote. C'est pour ça que tu obtiens cette erreur.

    Par ailleurs, je ne me sers ni de netbeans (pour développer en tout cas), ni d'ODBC, mais je ne pense pas qu'il soit obligatoire d'utiliser ODBC. Pourquoi ne pas se connecter à ta base MySQL avec un pilote natif MySQL ?

    EDIT : je n'avais pas vu que tu disais ne pas connaitre les user/password. De mémoire, il me semble que par défaut le user de MySQL est root et qu'il n'y a pas de mot de passe. Cela doit pouvoir se trouver dans la documentation de MySQL.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. [PHP 5.2] POO et connexion à une base de données dans une fonction
    Par tolwin dans le forum Langage
    Réponses: 5
    Dernier message: 09/11/2012, 11h39
  2. [PDO] et connexion à une base de données dans une fonction
    Par ksper92 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/11/2012, 09h28
  3. Paramètres de connexion à une base de données dans un fichier xml
    Par Davesique dans le forum Persistance des données
    Réponses: 1
    Dernier message: 17/11/2010, 22h09
  4. Réponses: 1
    Dernier message: 07/04/2010, 23h50
  5. Réponses: 2
    Dernier message: 04/05/2007, 15h13

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