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 :

JDBC et base embarquée


Sujet :

JDBC Java

  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 466
    Points : 333
    Points
    333
    Par défaut JDBC et base embarquée
    Bonjour,
    Je débute avec les bases de données. Mon titre n''est pas très éloquent parce qu'en fait je ne sais pas encore comment poser mes questions. Bien entendu j'ai lu divers forums et tutoriels sur JDBC et aussi HSQLDB.
    Le plus simple est peut être que j'expose ce que je veux faire.
    Je développe un programme en java qui utilise des données (rien de bien novateur, c'est le contraire qui serait étonnant). Je souhaite mettre ces données dans une base. Cependant je ne veux pas que l'utilisateur final ait à installer un SGBD (MySQL ou équivalent). A préciser que cet utilisateur final n'a pas à écrire dans la base de données, seulement la lire. Pour le moment tout est en mémoire dans des listes. Le passage en BD est-il pertinent ? Est-il possible d'utiliser une base de données sans installer les outils habituels (wamp par exemple) ? J'ai cru comprendre que oui avec JDBC et HSQLBD mais je ne m'en sors pas. J'ai suivi le tuto de Baptiste Witch mais dés la première ligne ça plante :
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
            try {
    Class.forName("org.hsqldb.jdbcDriver").newInstance();            
                System.out.println("Connection effective !");  */         
     
    /*            //Création d'un objet Statement
                Statement state = conn.createStatement ();
                //L'objet ResultSet contient le résultat de la requête SQL
                ResultSet result = state.executeQuery("SELECT * FROM paragraphe");
                //On récupère les MetaData
                ResultSetMetaData resultMeta = result.getMetaData();
                
                //Largeur de chaque colonne
                int [] largeurs = new int[7];
                // pour les entêtes de colonnes
                for(int i = 1; i <=  7; i++)
                {
                    largeurs[i-1] = resultMeta.getColumnName(i).length ();
                }
                // pour les champs
                while(result.next())
                {           
                    for(int i = 1; i <=  7; i++)
                    {
                        if (result.getObject(i)!=null)
                             if (result.getObject(i).toString().length () > largeurs[i-1]) largeurs[i-1] = result.getObject(i).toString().length ();
                    }
     
                }
                int largeurTotale = 0;
                for(int i = 0; i <=  6; i++)
                {
                    largeurs[i] = largeurs[i]+2;
                    largeurTotale=largeurTotale + largeurs[i];
                }
                //La première ligne
                String Ligne1 = "";
                for(int i=1;i<=99;i++) Ligne1 = Ligne1 + "*";
                String Ligne2 = "*";
                for(int i=2;i<99;i++) Ligne2 = Ligne2 + "-";
                Ligne2 = Ligne2 + "*";
                System.out.println(Ligne1);
                 //On affiche le nom des colonnes
                for(int i = 1; i <=  7; i++)
                {
                    String s = TraiterValeurs(resultMeta.getColumnName(i).toUpperCase(),largeurs[i-1]);
                    s="*" + s;
                    System.out.print (s);
                }
                System.out.println ("*");
                System.out.println (Ligne1);
                //Ecriture des valeurs
                result.beforeFirst ();
                while(result.next()){           
                   //System.out.print ("*"); 
                   for(int i = 1; i <=  7; i++)
                    {
                       String r =  (result.getObject(i)==null)? "NULL" : result.getObject(i).toString();
                       String s=TraiterValeurs(r,largeurs[i-1]);
                       s = ((i==1)? "*" : "|") + s;
                       System.out.print (s);
                    }
                    System.out.println("*");
                    System.out.println(result.isLast ()? Ligne1 : Ligne2);
                }
     
     
     
                            result.close();
                            state.close();*/
     
            } catch (Exception e) {
                e.printStackTrace();
            }       
        }

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    765
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 765
    Points : 1 036
    Points
    1 036
    Par défaut
    Bonjour,

    Il faut que le fichier hsqldb.jar soit accessible par ton projet.

  3. #3
    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,

    Si tu développe avec éclipse par exemple, pour ne plus avoir l'erreur dont tu as là, voici ce que tu devras faire :

    Il faut que tu ajoute le fichier .jar de HSQLDB de jdbc comme l'a dit l'intervenant précédent, à ton projet. Tu le télécharge sur le net si tu ne l'a pas et tu le met dans un répertoire de ta machine. Puis, tu fais un clique droit sur ton projet, tu choisis properties-->Java Build path-->Librairies-->Add jar, et là tu ajoute le hsqldb.jar à ton projet en indiquant le chemin qui où il se trouve dans ta machine.

    En espérant t'avoir aidé,

    Cordialement.

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 466
    Points : 333
    Points
    333
    Par défaut Merci beaucoup
    En effet je m'y prenais mal.

    Maintenant ça marche pour le driver. Essayons la connection.

    J'aurai sûrement d'autres questions.

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 466
    Points : 333
    Points
    333
    Par défaut Pb connexion maintenant
    J'avais prévu de revenir vite.

    Donc avec la seconde ligne de code qui crée la connexion, ça ne marche pas.

    Voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
                Class.forName("com.mysql.jdbc.Driver");
                System.out.println("DRIVER OK ! ");
     
                String url = "jdbc:hsqldb:file:histoire_mondiale";
                String user = "sa";
                String passwd = "";
                Connection conn = DriverManager.getConnection(url, user, passwd);
     
                System.out.println("Connection effective !");
    Donc le driver est OK, mais pour la connexion il me renvoie ce message :

    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at AccesBD.TestAccesBD.main(TestAccesBD.java:30)
    Effectivement la base n'est pas créée, mais Baptiste Witch indique dans son tuto la chose suivante :

    Ensuite, on ouvre une nouvelle connexion à la base de données. Remplacez database par le nom que vous voulez donner à votre base, si elle n'existe pas, elle sera automatiquement créée, sinon, elle va s'ouvrir. Le login est sa et il n'y a pas de mot de passe :
    Connection connexion = DriverManager.getConnection("jdbc:hsqldb:file:database", "sa", "");
    Une question supplémentaire : le login "sa" est_il obligatoire ou peut-il être remplacé par un login de mon choix ?

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    C'est le driver de hsqldb et non celui de mysql dont vous avez besoin!

  7. #7
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 466
    Points : 333
    Points
    333
    Par défaut Pb connexion
    Citation Envoyé par tchize_ Voir le message
    C'est le driver de hsqldb et non celui de mysql dont vous avez besoin!
    En effet. Là je suis vraiment un boulet. Je me suis mélangé dans mes divers essais.
    De plus j'ai rajouté le jar de mysql au lieu de rajouter celui de HSQLDB

    Super ça a marché. A plus dans une nouvelle discussion.

    Comment je fais pour indiquer que le problème est résolu ?

    Merci encore.

  8. #8
    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
    Salut,

    comme l'a dit l'intervenant précédent, il parait que tu charges plutôt le driver de mysql et celui de hsqldb :

    Class.forName("com.mysql.jdbc.Driver");
    il faut donc y rémédié sinon tu ne passeras pas l'étape de la connexion.

    Tu charge le driver comme indiqué dans mon précédent post, puis tu l'appelles dans le code ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Class.forName("org.hsqldb.jdbcDriver").newInstance();
    Cordialement.

  9. #9
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 466
    Points : 333
    Points
    333
    Par défaut Résolu
    Merci. En effet j'ai confondu deux essais de gestion, l'un avec mySql que j'avais abandonné et l'autre avec HSQLDB.

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

Discussions similaires

  1. JDBC et base embarquée
    Par Patrice Henrio dans le forum JDBC
    Réponses: 0
    Dernier message: 19/09/2011, 11h23
  2. Connection via JDBC sur bases ODB
    Par kikijojo72 dans le forum JDBC
    Réponses: 4
    Dernier message: 21/11/2009, 13h17
  3. Base embarquée
    Par FranT dans le forum Bases de données
    Réponses: 3
    Dernier message: 04/06/2008, 11h33
  4. [JDBC]Connection base de donnees oracle
    Par jlassira dans le forum JDBC
    Réponses: 2
    Dernier message: 07/10/2005, 13h33
  5. [JDBC]Quelle base de données java choisir ?
    Par Orionmel dans le forum JDBC
    Réponses: 3
    Dernier message: 02/10/2005, 20h56

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