Précédent   Forum du club des développeurs et IT Pro > Bases de données > Firebird > Connexion aux bases de données
Connexion aux bases de données Forum d'entraide sur la connectivité Firebird: composants, drivers, transactions, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 21/02/2013, 17h30   #1
nicot84
Invité de passage
 
Inscription : 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 :
Citation:
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.
nicot84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2013, 10h59   #2
Ph. B.
Expert Confirmé
 
Avatar de Ph. B.
 
Homme Philippe
Inscription : avril 2002
Messages : 1 032
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Âge : 46
Localisation : France, Haute Garonne (Midi Pyrénées)

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

Informations forums :
Inscription : avril 2002
Messages : 1 032
Points : 2 665
Points : 2 665
Envoyer un message via ICQ à Ph. B. Envoyer un message via Skype™ à Ph. B.
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.
Ph. B. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2013, 14h45   #3
nicot84
Invité de passage
 
Inscription : février 2013
Messages : 3
Détails du profil
Informations forums :
Inscription : février 2013
Messages : 3
Points : 0
Points : 0
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;
nicot84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2013, 19h26   #4
Ph. B.
Expert Confirmé
 
Avatar de Ph. B.
 
Homme Philippe
Inscription : avril 2002
Messages : 1 032
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Âge : 46
Localisation : France, Haute Garonne (Midi Pyrénées)

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

Informations forums :
Inscription : avril 2002
Messages : 1 032
Points : 2 665
Points : 2 665
Envoyer un message via ICQ à Ph. B. Envoyer un message via Skype™ à Ph. B.
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.
Ph. B. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2013, 15h03   #5
nicot84
Invité de passage
 
Inscription : 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.
nicot84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 05h34.


 
 
 
 
Partenaires

Hébergement Web