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 :

Accès base de données


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2011
    Messages : 137
    Points : 56
    Points
    56
    Par défaut Accès base de données
    Bonjour chez Collègues !

    Un petit soucis dès la lundi matin, comme si c'est pas malheureux.

    Voici mon code de la classe Test :

    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
    package PackageRequete;
     
    import java.sql.SQLException;
     
    public class Test {
     
     
    	public static void main (String[] args) throws SQLException, ClassNotFoundException{
     
    		String pilote = "sun.jdbc.odbc.JdbcOdbcDriver";
    		Class.forName(pilote); 
    		DataBase bdd = new DataBase("java:comp/env/jdbc://1.0.0.6", "TRB01R", "TRB01R");
     
    	}
     
     
     
     
    }

    et pour ma classe DataBase :

    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
    package PackageRequete;
     
    import java.sql.*;
     
    public class DataBase {
     
     
    	public DataBase(String url, String login, String pass) throws SQLException {
     
    		Connection connection = DriverManager.getConnection(url, login, pass);
    		Statement stt = connection.createStatement();
    		ResultSet resultat = stt.executeQuery("SELECT * FROM UB001V010 ;");
     
    		while(resultat.next()){
    			String date = resultat.getString("DAT");
    			String heure = resultat.getString("HEUR");
    			String code_exp= resultat.getString("CODE_EXP");
    			String exp = resultat.getString("EXPEDITEUR");
    			String ref = resultat.getString("REFERENCE");
    			int typ = resultat.getInt("TYP");
    			int statut = resultat.getInt("STATUT");
     
    			System.out.println(date + "|" + heure + "|" + code_exp + "|" + exp + "|" + ref + "|" + typ + "|" + statut);
    		}
     
    	}
     
     
    	public void main (String[] args) throws SQLException{
     
     
    	}
     
     
    }

    Voici l'erreur :

    Exception in thread "main" java.sql.SQLException: No suitable driver found for jdbc:comp://1.0.0.6
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at PackageRequete.DataBase.<init>(DataBase.java:10)
    at PackageRequete.Test.main(Test.java:12)


    Pourtant j'ai téléchargé le driver à la bonne adresse.

    Pourquoi ça ne fonctionne pas sachant que j'ai installé le pilote au bon endroit ?

  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,

    Citation Envoyé par Baboulinet_ Voir le message
    Pourtant j'ai téléchargé le driver à la bonne adresse.
    Quel drivers ???

    Citation Envoyé par Baboulinet_ Voir le message
    Pourquoi ça ne fonctionne pas sachant que j'ai installé le pilote au bon endroit ?
    C'est à dire ???

    a++

  3. #3
    Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2011
    Messages : 137
    Points : 56
    Points
    56
    Par défaut
    Je suis stupide, j'ai téléchargé le driver mysql connector ... pour jdbc j'adore.

    Le site d'Oracle étant en maintenance, aurais tu une idée où je pourrais trouver un driver correspondant à mon soucis adiGuba stp ?

    Edit : il n'est plus en maintenance je suppose donc que je dois télécharger le premier de la liste :

    http://www.oracle.com/technetwork/da...ex-091264.html

  4. #4
    Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2011
    Messages : 137
    Points : 56
    Points
    56
    Par défaut
    En fait non, je suis stupide d'avoir été stupide puisque je l'avais déjà téléchargé ...

    Bref j'ai toujours l'erreur :

    Exception in thread "main" java.sql.SQLException: No suitable driver found for java:comp/env/jdbc://1.0.0.6
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at PackageRequete.DataBase.<init>(DataBase.java:10)
    at PackageRequete.Test.main(Test.java:12)


    Cette erreur apparait lorsque je lance mon test :

    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
    package PackageRequete;
     
    import java.sql.SQLException;
     
    public class Test {
     
     
    	public static void main (String[] args) throws SQLException, ClassNotFoundException{
     
    		String pilote = "sun.jdbc.odbc.JdbcOdbcDriver";
    		Class.forName(pilote); 
    		DataBase bdd = new DataBase("java:comp/env/jdbc://1.0.0.6", "TRB01R", "TRB01R");
     
    	}
     
     
     
     
    }

  5. #5
    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
    Mais... Tu utilises quoi comme BD et comme drivers ?

    Tu parles de Mysql et d'Oracle 11g... mais tu charges le driver ODBC !?


    De plus je ne vois pas du tout à quoi correspond ton url de connexion...


    a++

  6. #6
    Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2011
    Messages : 137
    Points : 56
    Points
    56
    Par défaut
    En fait je récupères le travail de quelqu'un qui n'est pas là (arrêt maladie)

    Mon chef de projet m'a proposé pour commencer à m'entraîner sur une base de données test AS400.

    J'ai récupéré dans un fichier d'accès à la base de données de cette personne :

    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    package com.cerpbn.extranet.bdd;
     
    /**
     * @author therve
     *
     * To change the template for this generated type comment go to
     * Window - Preferences - Java - Code Generation - Code and Comments
     */
     
    import com.cerpbn.extranet.commun.Cnf;
    import com.cerpbn.extranet.commun.Log;
     
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.sql.DataSource;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.sql.Statement;
     
    public class ConnexionDataBase {
        public Connection con = null;
        public Statement queryStatement = null;
        public Log log = Log.getInstance();
        public Cnf cnf = Cnf.getInstance();
        public Context ctx = null;
        private DataSource ds = null;
     
     
        public ConnexionDataBase(String nomDataBase) {
            String envDatabase = new String("java:comp/env/jdbc/");
     
            try {
                ctx = new InitialContext();
     
     
            } catch (NamingException naming) {
                log.error("Impossible de créer une variable Context (pro)");
            }
     
            try {
                ds = (DataSource) ctx.lookup(envDatabase.concat(nomDataBase));
                try {
                    /*
                             ds.getLogWriter().println("init0");
                             ds.setLogWriter(new PrintWriter(new FileOutputStream(nomDataBase+".log")) );
             //                ds.setLogWriter(new PrintWriter(new PrintWriter(System.out, true) ));
                             ds.getLogWriter().println("Init1");
                    */
                } catch (Exception e) {
                    e.printStackTrace();  //To change body of catch statement use Options | File Templates.
                }
            } catch (NamingException naming) {
                log.error("Impossible de créer une variable DataSource (pro)");
            }
        }
     
        public Connection getConnection() {
            try {
                con = ds.getConnection();
            } catch (SQLException sqle) {
                log.error("Impossible d'ouvrir une connexion du pool (pro)");
                log.error("-->" + sqle.getMessage());
                log.error("-->" + sqle.getStackTrace());
            }
            return con;
        }
     
    public boolean closeConnection() {
            try {
                con.close();
                con = null;
                return true;
            } catch (SQLException sqle) {
                log.error("Impossible de rendre la connexion au pool (pro)");
                log.error("-->" + sqle.getMessage());
                log.error("-->" + sqle.getStackTrace());
                con = null;
                return false;
            }
        }
     
        public void destroy() {
            // on detruit les objets datasource et context en les initialisant Ã* null
            ds = null;
            try {
                ctx.close();
                ctx = null;
            } catch (NamingException name) {
                log.error("Impossible de fermer l'objet context (pro)");
                log.error("-->" + name.getMessage());
                log.error("-->" + name.getStackTrace());
                ctx = null;
            }
        }
    }
    J'en ai déduis que j'étais sur une base de données de type jdbc en accès.
    L'url de connexion est l'adresse ip de la base de données test du serveur AS400.

  7. #7
    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
    Non : "java:comp/env/jdbc/" ne correspond pas à une URL de connexion JDBC, mais au nom d'une ressource géré par un contexte d'environnement (un serveur d'application Java EE ??).

    a++

  8. #8
    Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2011
    Messages : 137
    Points : 56
    Points
    56
    Par défaut
    J'suis d'accord avec ça.
    Mais mon problème vient du fait que mon programme me balance une erreur de driver introuvable.

    Aurais-tu un aiguillage à me fournir pour tenter de savoir comment je pourrais résoudre mon problème ?

    J'utilise Eclipse (la personne utilisait IntelliJ Idea mais ça ne change rien au soucis). Il y a un nombre incalculable de fichiers pour son travail du coup je ne sais même pas où chercher ni quel type de fichier chercher (et mon chef de projet n'est pas là aujourd'hui ... tu parles d'un lundi matin ...)

  9. #9
    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
    Ben pour t'aiguiller il faut déjà savoir sur quoi tu te connecte !!! Je ne sais toujours pas sur quelle type de base de donnée tu va te connecter.

    Tu dis avoir bien installer le drivers JDBC, mais je ne sais pas lequel ni comment tu l'as installer...


    a++

  10. #10
    Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2011
    Messages : 137
    Points : 56
    Points
    56
    Par défaut
    Bon j'étais vraiment loin du début de la solution.

    J'ai pu obtenir l'information essentielle que tu as besoin.
    Il s’agit de DB2, il faut utiliser le toolkit dans jt400native.jar (donc un driver pour l'accès à la base)

    Que dois-je faire maintenant ?

    J'ai parcouru les forums et il me semble que pour ce type de bdd il faut utiliser le pilote "COM.ibm.db2.jdbc.app.DB2Driver" pour class.forName

    Mais j'obtiens cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Exception in thread "main" java.lang.ClassNotFoundException: COM.ibm.db2.jdbc.app.DB2Driver
    	at java.net.URLClassLoader$1.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.net.URLClassLoader.findClass(Unknown Source)
    	at java.lang.ClassLoader.loadClass(Unknown Source)
    	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    	at java.lang.ClassLoader.loadClass(Unknown Source)
    	at java.lang.Class.forName0(Native Method)
    	at java.lang.Class.forName(Unknown Source)
    	at PackageRequete.Test.main(Test.java:13)

  11. #11
    Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2011
    Messages : 137
    Points : 56
    Points
    56
    Par défaut
    Bon j'ai réussi à faire fonctionner ma classe test (enfin)
    J'suis allé cherché ma solution sur IBM et même sur des forums anglais

    Bref, j'ai un soucis de plus qui concerne ma classe DataBase maintenant.
    Je la relinke :

    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
    package PackageRequete;
     
    import java.sql.*;
     
    public class DataBase {
     
     
    	public DataBase(String url, String login, String pass) throws SQLException {
     
    		Connection connection = DriverManager.getConnection(url, login, pass);
    		Statement stt = connection.createStatement();
    		ResultSet resultat = stt.executeQuery("SELECT * FROM UB001V010 ;");
     
    		while(resultat.next()){
    			String date = resultat.getString("DAT");
    			String heure = resultat.getString("HEUR");
    			String code_exp= resultat.getString("CODE_EXP");
    			String exp = resultat.getString("EXPEDITEUR");
    			String ref = resultat.getString("REFERENCE");
    			int typ = resultat.getInt("TYP");
    			int statut = resultat.getInt("STATUT");
     
    			System.out.println(date + "|" + heure + "|" + code_exp + "|" + exp + "|" + ref + "|" + typ + "|" + statut);
    		}
     
    	}
     
     
    	public void main (String[] args) throws SQLException{
     
     
    	}
     
     
    }
    Et voici ma classe test refaite du coup :

    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
    package PackageRequete;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
     
    public class Test {
     
     
    	public static void main (String[] args) throws SQLException, ClassNotFoundException{
     
    		String pilote = "com.ibm.as400.access.AS400JDBCDriver";
    		Class.forName(pilote); 
    		DataBase bdd = new DataBase("jdbc:as400://1.0.0.6", "", "");
     
    	}
     
     
     
     
    }

    Quand je compile, j'ai une petite fenêtre qui apparait me demandant mon log/pass et lorsque je valide, j'obtiens une fermeture de ce programme avec l'erreur suivante :

    Exception in thread "main" java.sql.SQLException: [SQL0104] Elément syntaxique ; n'est pas correct. Eléments possibles : <FIN-INSTRUCTION>.
    at com.ibm.as400.access.JDError.throwSQLException(JDError.java:533)
    at com.ibm.as400.access.JDError.throwSQLException(JDError.java:504)
    at com.ibm.as400.access.AS400JDBCStatement.commonPrepare(AS400JDBCStatement.java:1302)
    at com.ibm.as400.access.AS400JDBCStatement.executeQuery(AS400JDBCStatement.java:1733)
    at PackageRequete.DataBase.<init>(DataBase.java:12)
    at PackageRequete.Test.main(Test.java:14)

  12. #12
    Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2011
    Messages : 137
    Points : 56
    Points
    56
    Par défaut
    Bon il aime pas le ; de ma requête ... bizarre
    En supprimant le ; il me sort une nouvelle erreur :

    Exception in thread "main" java.sql.SQLException: [SQL0204] UB001V010 de type *FILE dans login non trouvé.

    login étant le login avec lequel je me log sur le serveur de l'as400

  13. #13
    Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2011
    Messages : 137
    Points : 56
    Points
    56
    Par défaut
    Bon en fait j'ai trouvé
    Merci pour m'avoir aiguillé haha

  14. #14
    Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2011
    Messages : 137
    Points : 56
    Points
    56
    Par défaut
    Par contre je mets au défi la personne qui trouvera cette solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ok1
    Exception in thread "main" java.sql.SQLException: [SQL0443] *N
    	at com.ibm.as400.access.JDError.throwSQLException(JDError.java:533)
    	at com.ibm.as400.access.JDError.throwSQLException(JDError.java:504)
    	at com.ibm.as400.access.AS400JDBCStatement.commonExecute(AS400JDBCStatement.java:741)
    	at com.ibm.as400.access.AS400JDBCStatement.executeQuery(AS400JDBCStatement.java:1734)
    	at PackageRequete.DataBase.<init>(DataBase.java:13)
    	at PackageRequete.Test.main(Test.java:14)
    Alors que mon code est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public DataBase(String url, String login, String pass) throws SQLException {
     
    		Connection connection = DriverManager.getConnection(url, login, pass);
    		Statement stt = connection.createStatement();
    		System.out.println("ok1");
    		ResultSet resultat = stt.executeQuery("SELECT * FROM MINOSFIC.UB001V01");
    		System.out.println("ok2");
    Comme vous le voyez le programme bloque sur l'executequerry ... j'ai recherché sur le net cette fameuse erreur ... j'ai pas trouvé solution au problème

Discussions similaires

  1. Accès Base de données Access
    Par vincent magnin dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 28/06/2006, 12h09
  2. Problème accès base de données
    Par alainconnu dans le forum Outils
    Réponses: 3
    Dernier message: 27/04/2006, 09h31
  3. [PHPMyAdmin] Accès base de donnée pour utilisateur
    Par nicodeme dans le forum Outils
    Réponses: 2
    Dernier message: 04/03/2006, 01h10
  4. [C#]Global.asax et accès base de données.
    Par R'SKaP dans le forum ASP.NET
    Réponses: 13
    Dernier message: 26/01/2006, 15h00
  5. [Kylix] Kylix et accès Base de données
    Par Oyoboy dans le forum EDI
    Réponses: 16
    Dernier message: 22/06/2004, 16h41

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