1. #1
    Invité de passage
    Inscrit en
    février 2013
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : février 2013
    Messages : 3
    Points : 0
    Points
    0

    Par défaut Pb connexion Firebird via JDBC Jaybird

    Bonjour

    Je tente de me connecter via un serveur unix Red-Hat sur une base Firebird en utilisant JDBC. L'objectif est ensuite de créer une connexion dans BusinessObject pour me connecter à cette base.

    Lorsque l'on telecharge Jaybird, deux mini programme Java sont fournis afin de tester la connectivité. Un seul fonctionne, c'est celui utilisant la classe org.firebirdsql.pool.FBWrappingDataSource pour créer la connexion.
    L'autre programme, qui utilise la classe java.sql.DriverManager.getConnection utilisé comme cela : java.sql.DriverManager.getConnection("jdbc:firebirdsql://w-iss", "dldk", "dmlk"); me pose un problème.

    Cette classe appele la classe org.firebirdsql.jdbc.FBDataSource.getConnection(), et c'est à ce niveau que j'ai une erreur (la même que celle dans l'application BusinessObject"). L'erreur est :
    org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544472. Your user name and password are not defined. Ask your database administrator to set up a Firebird login.
    Je pense qu'il y a un problème sur le driver Jaybird, j'ai pourtant récupérer la dernière version (2.2.2) de celui-ci. Est-ce possible que cela vienne de la classe Java java.sql.DriverManager.getConnection ?

    Ma version Java sur le serveur est 1.6.0_33.

    Le package Jaybird utilisé dans le ClassPath est : jaybird-full-2.2.2.jar

    Merci de votre aide.

  2. #2
    Expert Confirmé Sénior
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    avril 2002
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2002
    Messages : 1 562
    Points : 4 685
    Points
    4 685

    Par défaut

    Bonjour,

    Voila comment je réalise la connexion à un base Firebird (Jaybird 2.2.1, je n'ai pas encore mis à jour en 2.2.2).
    Je passe les identifiants auprès du SGBD via des properties que je vais lire dans un fichier xml.
    C'est un extrait de code avec une classe dédiée à la connexion.
    Code java : 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
    import java.io.*;
    import java.sql.*;
    import java.util.*;
     
    public class Connexion {
     
        private String host;
        private String port;
        private String database;
     
        private Properties cnxProps;
        private static Boolean isConnected = false;
     
        public Connexion() throws Exception {
            Class.forName("org.firebirdsql.jdbc.FBDriver").newInstance();
            initConnectionProperties();
        }
     
        public boolean getConnected() {
            return isConnected;
        }
     
        public void setConnected(boolean Value) throws SQLException {
            if (Value) {
                if (!isConnected) {
                    cnx = DriverManager.getConnection(
                            "jdbc:firebirdsql:" + host + "/" + port + ":" + database,
                            cnxProps);
                }
            }
            else if (isConnected) {
                cnx.close();
            }
            isConnected = Value;
        }
     
        private void initConnectionProperties()
                throws FileNotFoundException, IOException {
            // Lecture des paramètres de connexion
            FileInputStream fStream = new FileInputStream("config.app");
            try {
                cnxProps = new Properties();
                cnxProps.loadFromXML(fStream);
            }
            finally {
                fStream.close();
            }
            // Affectation des paramètres spécifiques et retrait de la hashtable
            database = cnxProps.getProperty("database");
            cnxProps.remove("database");
            host = cnxProps.getProperty("host");
            cnxProps.remove("host");
            port = cnxProps.getProperty("port");
            cnxProps.remove("port");
        }
    }
    Et le contenu du fichier XML
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
    <properties>
    <entry key="user">SYSDBA</entry>
    <entry key="port">3050</entry>
    <entry key="password">masterkey</entry>
    <entry key="dialect">3</entry>
    <entry key="encoding">UTF8</entry>
    <entry key="host">192.168.1.22</entry>
    <entry key="database">/var/lib/firebird/2.5/data/mabase.fdb</entry>
    </properties>
    Pour database, j'aurais pu utiliser un alias.
    Philippe.

  3. #3
    Invité de passage
    Inscrit en
    février 2013
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : février 2013
    Messages : 3
    Points : 0
    Points
    0

    Par défaut

    J'ai toujours la même erreur. Voici le code utilisé :

    Code java : 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
    int connectionAlternative = CONNECT_DRIVERMANAGER;
                switch (connectionAlternative) {
     
                case CONNECT_DRIVERMANAGER:
                    /* This alternative is driver independent; the DriverManager will find
                     * the right driver for you based on the jdbc subprotocol.
                     */
                    try {
                        System.out.println("kljhljljl");
                        System.out.println(user);
                        Properties props = new Properties();
                        props.setProperty("user", "SYSDBA");
                        props.setProperty("password", "masterkey");
                        props.setProperty("port", "3050");
                        props.setProperty("dialect", "3");
                        props.setProperty("encoding", "UTF8");
                        props.setProperty("host", "w-iss");
                        props.setProperty("database", "SFE DATA\\BASES\\SANTE.FDB");
                        //props.setProperty("lc_ctype", "ISO8859_1");
                        //con = java.sql.DriverManager.getConnection(databaseURL, "", "");
                        con = java.sql.DriverManager.getConnection(databaseURL,props);
                        //con = java.sql.DriverManager.getConnection("jdbc:firebirdsql://w-iss", "dldk", "dmlk");
                        System.out.println("Connection established.");
                    } catch (java.sql.SQLException e) {
                        e.printStackTrace();
                        System.out.println("Unable to establish a connection through the driver manager.");
                        showSQLException(e);
                        return;
                    }
                    break;

  4. #4
    Expert Confirmé Sénior
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    avril 2002
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2002
    Messages : 1 562
    Points : 4 685
    Points
    4 685

    Par défaut

    Votre code appliqué à une de mes bases, fonctionne mais j'ai deux remarques :
    1. Je ne sais pas comment est initialisée la variable databaseURL
    2. Pour la propriété database j'indique le chemin avec de simples slashs /, même sous windows.
      Exemple :
      Code java : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      props.setProperty("database", "C:/Developpement/Databases/TEST.FDB"); // Windows
      //
      props.setProperty("database", "/var/lib/firebird/2.5/data/test.fdb"); // Linux
    Philippe.

  5. #5
    Invité de passage
    Inscrit en
    février 2013
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : février 2013
    Messages : 3
    Points : 0
    Points
    0

    Par défaut Solution trouvée

    J'ai trouvé la solution, cela venait du mon URL Database :
    Ancienne version : jdbc:firebirdsql://w-iss-1.novea.fr:e:\\SFE DATA\\BASES\\SANTE.FDB
    Bonne version : jdbc:firebirdsql:w-iss-1.novea.cg13.fr:e:/SFE DATA/BASES/SANTE.FDB

    Merci pour votre aide.

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

Discussions similaires

  1. Pb connexion Firebird via Jaybird - Java
    Par sims26 dans le forum Eclipse
    Réponses: 1
    Dernier message: 25/01/2010, 22h12
  2. Connexion à Firebird via SAMBA
    Par JP.NUAGE dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 27/09/2009, 08h54
  3. Connexion Firebird via sdsl
    Par ludo00002 dans le forum Connexion aux bases de données
    Réponses: 19
    Dernier message: 02/07/2008, 17h10
  4. connexion à PHPMySQL via jdbc
    Par sjtraore dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 20/02/2006, 18h18

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