Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  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é
    Avatar de Ph. B.
    Homme Profil pro Philippe
    Inscrit en
    avril 2002
    Messages
    1 292
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2002
    Messages : 1 292
    Points : 3 497
    Points
    3 497

    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 :
    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 :
    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 :
    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é
    Avatar de Ph. B.
    Homme Profil pro Philippe
    Inscrit en
    avril 2002
    Messages
    1 292
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2002
    Messages : 1 292
    Points : 3 497
    Points
    3 497

    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 :
      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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •