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

Entrée/Sortie Java Discussion :

Import de fichier Jar - Postgres


Sujet :

Entrée/Sortie Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 45
    Points : 33
    Points
    33
    Par défaut Import de fichier Jar - Postgres
    Bonjour à tous,

    Je débute avec Java et j'avoue avoir quelques difficultés. Je vous explique mon problème. Je souhaite effectuer une connexion à une base de données postgres.

    J'ai donc pour cela télécharger le fichier jar disponible sur le site jdbc.postgresql. J'ai ensuite importé celui-ci via Eclipse en utilisant build path > add external Archives. Le point positif est que cela fonctionne correctement et que la connexion à ma base se fait bien. Néanmoins, je suis obligé de mettre des try/catch partout sinon eclipse refuse de compiler mon projet. J'ai donc au final plus d'une soixantaine de lignes de code pour un simple appel.

    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
    import java.sql.*;
    public class vesselDistance {
     
        /**
         * @param args
         */
        public static void main(String[] args) {
            String wktGeom;
            wktGeom = "LINESTRING(3 4,10 50,20 25)";
     
            try {
                Class.forName("org.postgresql.Driver");
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
            String url = "jdbc:postgresql://localhost:5432/dcns_postgis"; 
            Connection db = null;
            try {
                db = DriverManager.getConnection(url, "postgres", "");
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            Statement st = null;
            try {
                st = db.createStatement();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            ResultSet rs = null;
            try {
                rs = st.executeQuery("SELECT type FROM geom_line WHERE gid = 4");
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                while (rs.next()) {
                    System.out.print("Colonne 1 renvoyée ");
                    System.out.println(rs.getString(1));
                    System.out.println(wktGeom);
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                rs.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                st.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
     
        }
     
    }
    J'aurais donc aimé savoir si c'est la bonne manière de faire. Est-ce normal qu'Eclipse m'oblige à mettre autant de try/catch ?

    J'ai également essayé en utilisant import plutôt que add external Archives mais le résultat est le même. D'ailleurs pourriez-vous m'expliquer la différence entre les deux ?

    Merci pour votre aide

    Arnaud

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    C'est normal que tu ais à gérer ces exceptions. Java utilise le principe des checked-exceptions qui force les développeurs à devoir traiter certaines exceptions.

    Par contre tu le fais très mal !!!

    Pour chaque exception tu te contentes de logger l'info, puis tu continues ton programme. C'est idiot car en cas de problème tu continues quand même. Par exemple si tu n'arrives pas à te connecter à ta base de données, tu vas quand même tenter d'exécuter la requete (qui ne marchera forcement pas), et tu vas quand même lire les données (qui n'existeront pas), etc...

    Bref cela va te générer tout plein d'exception pour rien.
    Cela peut paraitre anodin ici, mais non seulement cela alourdit le code, mais dans des applications plus importante cela peut aussi porter à confusion : si tu as une exception tu peux arriver rapidement à en comprendre l'origine. Si tu en as 50 cela peut être plus compliqué.


    Ce que tu dois faire, c'est d'utiliser un seul try/catch pour tout ton traitement : ici il n'y a pas de raison de vouloir le continuer si une des étapes posent problème.

    De plus il faudrait utiliser des try/finally pour fermer proprement les ressources (voir la FAQ pour plus de détail).

    Ce qui donnerait :
    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
        public static void main(String[] args) {
            try {
                String wktGeom = "LINESTRING(3 4,10 50,20 25)";
     
                Class.forName("org.postgresql.Driver");
     
                String url = "jdbc:postgresql://localhost:5432/dcns_postgis";
                Connection db = DriverManager.getConnection(url, "postgres", "");
                try {
     
                    Statement st = db.createStatement();
                    try {
                        ResultSet rs = st.executeQuery("SELECT type FROM geom_line WHERE gid = 4");
                        try {
                            while (rs.next()) {
                                System.out.print("Colonne 1 renvoyée ");
                                System.out.println(rs.getString(1));
                                System.out.println(wktGeom);
                            }
                        } finally {
                            rs.close();
                        }
                    } finally {
                        st.close();
                    }
                } finally {
                    db.close();
                }
     
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    A noter que l'on peut également laisser remonter l'exception, en déclarant par exemple throws SQLException dans la définition de la méthode...


    Citation Envoyé par arno974 Voir le message
    J'ai également essayé en utilisant import plutôt que add external Archives mais le résultat est le même. D'ailleurs pourriez-vous m'expliquer la différence entre les deux ?
    Là je ne comprend pas trop la question !? La différence entre quoi et quoi ?


    a++

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 45
    Points : 33
    Points
    33
    Par défaut
    Ah merci beaucoup ! C'est beaucoup plus propre comme ça effectivement.
    En fait j'avais mis autant de try/catch parce qu'Eclipse me les avait suggérée.

    Concernant maintenant "Import" et "Add External Archives", j'aurais souhaité savoir la différence entre ces deux notions pour Eclipse.

    Merci en tout cas pour le coup de main.

    Arnaud

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par arno974 Voir le message
    En fait j'avais mis autant de try/catch parce qu'Eclipse me les avait suggérée.
    eclipse ne propose qu'une solution à un problème précis, mais il n'a pas une vision globale de ton application... bref il ne faut pas l'écouter aveuglément

    Citation Envoyé par arno974 Voir le message
    Concernant maintenant "Import" et "Add External Archives", j'aurais souhaité savoir la différence entre ces deux notions pour Eclipse.
    Le import c'est du Java et cela consiste simplement à indiquer la classe que tu veux utiliser.
    Le "Add External Archives" d'eclipse sert simplement à référencer un Jar dans le classpath, afin qu'il soit accessible à la compilation.


    a++

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 45
    Points : 33
    Points
    33
    Par défaut
    eclipse ne propose qu'une solution à un problème précis, mais il n'a pas une vision globale de ton application... bref il ne faut pas l'écouter aveuglément
    Avec ce que tu m'as expliqué, je veux bien te croire

    Concernant toujours l'Import et l'Add external archives, je pense que l'on ne parle pas de la même chose. En effet, quand je fais click droit sur mon projet, le menu déroulant qui s'affiche alors me permet de :
    • soit de faire un import, où je suis alors invité à choisir entre par exemple des Archive file ou encore Project from cvs
    • sinon de passer par build path puis add external jar


    Si mon intuition est bonne (ce qui n'est pas gagné) add external jar travaille avec des fichiers distants contrairement à Import qui les ajoute directement dans le workspace. Ai-je tort ?

    Arnaud

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Ah ok c'est de la bidouille d'eclipse tout ca

    Le "import" te permet d'importer des fichiers directement dans ton projet (pour les modifier par exemple), tandis qu'avec les "external jar" tu te contentes de les utiliser...

    a++

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 45
    Points : 33
    Points
    33
    Par défaut
    Merci pour toutes ces infos !

    @+


    Arnaud

Discussions similaires

  1. Importer un fichier JAR
    Par stef94 dans le forum Eclipse
    Réponses: 1
    Dernier message: 18/10/2010, 17h46
  2. Importer un fichier avec postgres : permission denied
    Par cedrix57 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 10/12/2009, 16h41
  3. [DOM] [xalan][crimson] Import des fichiers jar
    Par abaithad dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 26/12/2008, 17h03
  4. Importer un fichier .jar vers eclipse
    Par kokoroko dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 24/03/2007, 15h06
  5. Comment importer un fichier jar ?
    Par infoprog dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 17/03/2007, 00h13

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