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

Messages postés
15
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
26 avril 2012
- - Dernière réponse : electra01
Messages postés
15
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
26 avril 2012
- 24 avril 2012 à 10:02
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();
}
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
8
3
Merci
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()

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 135 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cormandyr
Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
8
0
Merci
Salut,

As-tu déjà penser à utiliser une seule connexion, active pour toute la durée de ton application?
(design pattern Singleton)
Commenter la réponse de cormandyr
Messages postés
15
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
26 avril 2012
0
Merci
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
Commenter la réponse de electra01
Messages postés
15
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
26 avril 2012
0
Merci
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
Commenter la réponse de electra01