JAVA / Repetition code de connection a une base de donnees [Résolu]

Signaler
Messages postés
15
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
26 avril 2012
-
Messages postés
15
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
26 avril 2012
-
Bonjour les amis
En fait j'ai un petit soucie, je dois me connecter a une base de donnees access jusque la ca va je l'ai fait!

Le probleme c qu'a chaque fois que je veux effectuer des requetes je dois repeter le code de connection pour que ca marche.
je souhaiterais avoir vos avis pour eviter la repetition du code ?

Merci a vous


try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver" );
}

catch (ClassNotFoundException e1) {
e1.printStackTrace();
}

String url = "jdbc:odbc:lala;DBQ=c:\\BD1.accdb"; // code connection

Connection con = null;

try {
con = DriverManager.getConnection(url);
}

catch (SQLException e1) {
e1.printStackTrace();
}

4 réponses

Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
11
normal, dans ta méthode getInstance(), tu as oublié d'assigné la valeur ^^ et je pense que tu as des erreurs dans ton singleton..
import java.sql.*;

public class CConnect {
    private static CConnect INSTANCE;
    private Connection con;

    private CConnect(){
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver" );
            String url = "jdbc:odbc:lala;DBQ=c:\\BD1.accdb";
            con = DriverManager.getConnection(url);
            System.out.println("la connection a votre base de donnees est etablie");
        } catch (ClassNotFoundException e1) {
            System.err.println("Impossible d'établir la connexion à votre base de données");
            e1.printStackTrace();
        } catch (SQLException e1) {
            System.err.println("Impossible d'établir la connexion à votre base de données");
            e1.printStackTrace();
        }

    }

    public static Connection getInstance(){
        if(INSTANCE== null) {
            INSTANCE = new CConnect();
        }
        return INSTANCE;
    }

    public Connection getConnection()
    {
        return con;
    }
} 

et pour avoir accès à la connexion :
CConnect.getInstance().getConnection()
Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
11
Salut,

As-tu déjà penser à utiliser une seule connexion, active pour toute la durée de ton application?
(design pattern Singleton)
Messages postés
15
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
26 avril 2012

Salut
oui je viens de le faire mon Singleton mais il ya un prob et j'arrive pas a le detecter .

voila mon source
////////////////////////////////////////////////////////////////////////

/*********************Singleton****************************************/

import java.sql.*;

public class CConnect {
private static Connection con;

private CConnect(){

try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver" );
}

catch (ClassNotFoundException e1) {
e1.printStackTrace();
}

String url = "jdbc:odbc:lala;DBQ=c:\\BD1.accdb";

Connection con = null;

try {
con = DriverManager.getConnection(url);
}

catch (SQLException e1) {
e1.printStackTrace();
}

System.out.println("la connection a votre base de donnees est etablie");

}
public static Connection getInstance(){
if(con == null){
new CConnect();
}
return con;
}

}
////////////////////////////////////////////////////////////////////////
/*************************La classe de ma requtte***********************
import java.sql.*;
public class Taxes {
private int goupeTaxes;
private int t1;
private int t2;

public Taxes(int g){ // constructeur de la classe Taxes

goupeTaxes=g;


String query = "SELECT * FROM Taxes where groupeTaxe="+ goupeTaxes + "";
ResultSet results;

try {
Statement stmt = CConnect.getInstance().createStatement();
results = stmt.executeQuery(query);
ResultSetMetaData rsmd = results.getMetaData();
int nCols = rsmd.getColumnCount();
boolean encore = results.next();
while(encore)
{
for(int i = 1; i <= nCols; i++)
{
System.out.print(results.getString(i) + " " );
}
System.out.println();
encore = results.next();
}
results.close();
}

catch(Exception e){
System.out.println("Erreur : " + e.getMessage());
}

}
////////////////////////////////////////////////////////////////////////
/*****************L'ERREUR AFFICHEE***********************************/


la connection a votre base de donnees est etablie
Erreur : null

Donc la connection est bien etablie mais la requette ne passe pas
merci a vous
Messages postés
15
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
26 avril 2012

Boujour
je suis super parceque j'ai trouve l'erreur .
C'etait juste l'initialisation de la variable con dans le Singleton qui etait de trop!


 Connection con = null;

je l'ai efface eeettt hop ca marche !!

Merci infiniment pour votre aide et vos reponses