IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

illustration pattern singleton pour se connecter à une base de données


Sujet :

avec Java

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 107
    Points : 54
    Points
    54
    Par défaut illustration pattern singleton pour se connecter à une base de données
    Bonjour La communauté,
    je tente d'illustrer le pattern singleton.
    je veux utiliser 1 singleton pr me connecter à une base de données de la sorte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    import java.sql.*;
    import java.util.*;
    public  class Singleton{
              private static String url = "jdbc:mysql://localhost:3306/aigemedb";
    			private static String user = "root";
    			private static String passwd = "monpass";
    			private static Connection conn;
    		        public static Connection getInstance(){
    			if (conn==null){
    				try{
    				  Class.forName("com.mysql.jdbc.Driver");
    				 conn = DriverManager.getConnection("url","user","passwd");
     
    				} catch (Exception e){
    				  e.printStackTrace(); }}
    			  return conn;
    		}
    la compilation de cela me ramène aucune erreur.

    Lorsque je compile le code ci dessous. j'ai un message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Symbol: variable Singleton
     location:class ConnectSingleton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    import java.sql.*;
    import java.util.*;
    public  class ConnectSingleton{       		
     
    		Statement state;		
    	public void afficher(){	
    	 try{
    	 ResultSet result = state.executeQuery("SELECT id_etudiant,sexe_etudiant,nom_etudiant FROM etudiant limit 5");
    	 ResultSetMetaData resultMeta = result.getMetaData();
    	 System.out.println("Il y'a " +resultMeta.getColumnCount()+ " Colonnes Dans cette Table");
    	 for(int i = 1; i <=  resultMeta.getColumnCount(); i++)
    				{System.out.println("* " + resultMeta.getColumnName(i));}			
    			System.out.println("\n******************************************************************************");
    			//On affiche le nom des colonnes
    	 for(int i = 1; i <=  resultMeta.getColumnCount(); i++)
    				{System.out.print("\t" + resultMeta.getColumnName(i).toUpperCase() + "\t *");}		
    			System.out.println("\n*************************************************");
    			while(result.next()){			
    				for(int i = 1; i <=  resultMeta.getColumnCount(); i++)
    					System.out.print("\t" + result.getObject(i).toString() + "\t |");			
    				System.out.println("\n--------------------------------------------------------------------------");			}
        state.close();
    	result.close();	
    	}catch (Exception e) {
    			e.printStackTrace();
    		}	}	
    	public static void main(String args[]) {	
    		Singleton.getInstance().afficher();
     
    	}
    }
    merci de bien vouloir m'indiquer ce qui cloche dans mon code.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Avant d'attaquer aux design pattern, je te conseille d'abord de voir les bases de java.
    Singleton.getInstance() retourne un objet de type Connection. Donc avec Singleton.getInstance().afficher() tu tentes d'appeler la méthode afficher d'un type Connection qu'il ne possède même pas.
    Pour le message d'erreur que tu nous donnes, ce n'est pas complet mais il manque des trucs du genre "cannot find symbol ". Si c'est le cas, ça vient du fait que tu n'as pas importé la classe java si c'est dans différent package, sinon la classe n'est pas encore compilé or que tu tentes de l'utiliser.

    A+.

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 107
    Points : 54
    Points
    54
    Par défaut
    Bonjour,
    en effet y'a bien le message d'erreur indexant cette ligne de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Singleton.getInstance().afficher();
    j'ai compilé la class singleton et elle est dans le répertoire courant de la classe ConnectSingleton qui contient la methode main.
    Comment devrais je l'importer ou comment appeler la class singleton ?

    Merci

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Ta classe ne correspond pas du tout au pattern Singleton.
    En gros un singleton s'ecrit comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class Singleton
    {
     private static Singleton instance = new Singleton();
     
     public static getInstance() {
      return instance;
     }
     
     private Singleton() {
     }
    }

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Regarde la faq et l'utilisation du mot clé "import".
    En résolvant cette message d'erreur que tu nous as cité, tu auras d'autre par rapport à ma remarque à l'utilisation de la méthode afficher().

    A+.

  6. #6
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Les tutoriels qui correspondent :
    Cas général :
    http://smeric.developpez.com/java/uml/singleton/
    Cas Multi-Thread
    http://christophej.developpez.com/tu...n/multithread/

    Je pense que dans un premier temps tu devrait tout place dans la même classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.Statement;
     
    class Singleton {
    	private static Singleton instance = new Singleton();
     
    	public static Singleton getInstance() {
    		return instance;
    	}
     
    	private String url = "jdbc:mysql://localhost:3306/aigemedb";
    	private String user = "root";
    	private String passwd = "monpass";
    	private Connection conn;
    	Statement state;
     
    	private Singleton() {
    		if (conn == null) {
    			try {
    				Class.forName("com.mysql.jdbc.Driver");
    				conn = DriverManager.getConnection(url, user, passwd);
     
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		}
    	}
     
    	public void afficher() {
    		try {
    			ResultSet result = state
    					.executeQuery("SELECT id_etudiant,sexe_etudiant,nom_etudiant FROM etudiant limit 5");
    			ResultSetMetaData resultMeta = result.getMetaData();
    			System.out.println("Il y'a " + resultMeta.getColumnCount()
    					+ " Colonnes Dans cette Table");
    			for (int i = 1; i <= resultMeta.getColumnCount(); i++) {
    				System.out.println("* " + resultMeta.getColumnName(i));
    			}
    			System.out
    					.println("\n******************************************************************************");
    			// On affiche le nom des colonnes
    			for (int i = 1; i <= resultMeta.getColumnCount(); i++) {
    				System.out.print("\t"
    						+ resultMeta.getColumnName(i).toUpperCase() + "\t *");
    			}
    			System.out
    					.println("\n*************************************************");
    			while (result.next()) {
    				for (int i = 1; i <= resultMeta.getColumnCount(); i++)
    					System.out.print("\t" + result.getObject(i).toString()
    							+ "\t |");
    				System.out
    						.println("\n--------------------------------------------------------------------------");
    			}
    			state.close();
    			result.close();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
     
    	public static void main(String args[]) {
    		Singleton.getInstance().afficher();
     
    	}
    }
    Commence par le code static, puis le code de l'objet. Et fait bien attention à la déclaration des attributs.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

Discussions similaires

  1. question pour se connecter à une base de données
    Par sky88 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 04/07/2009, 20h05
  2. Comment faire pour se connecter à une base de données ?
    Par petitclem dans le forum C++Builder
    Réponses: 10
    Dernier message: 03/09/2008, 10h52
  3. Pilote JDBC pour se connecter à une base Oracle
    Par elodie59310 dans le forum Oracle
    Réponses: 3
    Dernier message: 22/06/2006, 16h21
  4. Réponses: 4
    Dernier message: 18/01/2006, 21h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo