JAVA / Repetition code de connection a une base de donnees

Résolu
electra01 Messages postés 15 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 26 avril 2012 - 22 avril 2012 à 16:24
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();
}

4 réponses

cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 11
23 avril 2012 à 21:47
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()
3
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 11
22 avril 2012 à 17:00
Salut,

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