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 :

Abstraction d'une BDD avec Java


Sujet :

avec Java

  1. #1
    Membre actif Avatar de 3logy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2007
    Messages : 280
    Points : 222
    Points
    222
    Par défaut Abstraction d'une BDD avec Java
    Salut a tous,

    j'ai une multitude de questions, mais je commence par celle ci :

    1. j'aimerais ecrire une classe qui me retourne tout les tableaux qui sont dans ma BDD!! sous forme d'object Table(une autre classe)!!


    Merci

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    tu appelle quoi un "tableau" dans ta base de donnée, une table? Si oui, le sql pour avoir la liste des tables sera spécifique au SGBD que tu utilise.

  3. #3
    Membre actif Avatar de 3logy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2007
    Messages : 280
    Points : 222
    Points
    222
    Par défaut
    Je voulais dire toutes les Tables, avec MySql la commande est :
    Bon j'ai fait 2 classes une classe Database.java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    package com.moi;
     
    public class Database {
     
     
    }
    et une classe SQLSingleton.java :

    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
     
    package com.moi;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
     
    public class SQLSingleton {
     
    	private static Connection instance = getConnection();
     
    	private SQLSingleton(){}
     
    	public static Connection getInstance(){
    		return instance;
    	}
     
    	private static Connection getConnection(){
     
    		try {
    			Class.forName("com.mysql.jdbc.Driver").newInstance();
    		} catch (InstantiationException e1) {
    			e1.printStackTrace();
    		} catch (IllegalAccessException e1) {
    			e1.printStackTrace();
    		} catch (ClassNotFoundException e1) {
    			e1.printStackTrace();
    		}
     
    		String sUser = "root";
    		String sPassword = "";
    		String sUrl = "jdbc:mysql://localhost:3306/verteiltesystem1";
     
     
    		Connection con = null;
    		try {
    			con = DriverManager.getConnection(sUrl, sUser, sPassword);
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return con;	
    	}
    }
    Bon la question comment me connecte au mysql dans la classe Database et recupere toutes les tables(show tables)???

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Je propose d'enlever le Singleton 'SQLSingleton'
    Et de faire une intance de Connection dans la Database.
    La Database, dans sont constructeur, se connectera à la base de donnée (on peut reprendre le code du SQLSingleton me semble t'il).

    Pour le reste, je propose de suivre un des magnifiques tutoriels du site: http://jmdoudoux.developpez.com/cour...va/partie5.php (y en a d'autre)

    Et finalement, je propose aussi de faire une interface pour laisser le possibilité de se connecter à plusieurs base de donnée (sans se limiter à une seule, grace à l'utilisation de l'interface)
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre actif Avatar de 3logy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2007
    Messages : 280
    Points : 222
    Points
    222
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Bonjour,

    Je propose d'enlever le Singleton 'SQLSingleton'
    Et de faire une intance de Connection dans la Database.
    c'aurait ete bien beau!! mais le Prof nous a donne des directives!!!

    Bon voici ce que j'ai fais :

    Une classe Properties :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      package de.example;
     
    public class DatabaseProperties {
    	public static final String HOSTNAME = "jdbc:mysql://localhost/db1";
    	public static final String USERNAME = "root";
    	public static final String PASSWORD = "toor";
    }
    Une classe Singleton :
    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
     
     package de.example;
     
    import java.sql.*;
    import com.mysql.jdbc.Connection;
     
    public class DatabaseSingleton {
     
    	public static DatabaseSingleton ref;
    	private Connection connection;
     
    	private DatabaseSingleton(){
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		}
    	}
     
    	public static DatabaseSingleton getDatabaseSingleton() {
    		if(ref == null){
    			ref = new DatabaseSingleton();
    		}
    		return ref;
    	}
     
    	public Object clone() throws CloneNotSupportedException {
    		throw new CloneNotSupportedException();
    	}
     
    	public Connection getConnection(boolean autoCommit) {
    		try {
    			DriverManager.getConnection(DatabaseProperties.HOSTNAME, DatabaseProperties.USERNAME,
    			DatabaseProperties.PASSWORD);
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return connection;
    	}
    }
    et j'utilise ainsi dans la classe database :
    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
     
         package de.example;
     
    import java.sql.*;
     
     
    public class Database {
     
    	private static void display(String message){
    		System.out.println(message);
    	}
     
    	private static void stop(String message){
    		System.err.println(message);
    		System.exit(99);
    	}
     
    	public static void main(java.lang.String[] args) throws SQLException{
     
    		DatabaseSingleton con = null;
    		ResultSet result = null;
    		String request = "show Tables";
     
    		try{
    			Class.forName("com.mysql.jdbc.Driver");
    		}catch(ClassNotFoundException e){
    			stop("Cannot load the jdbc:mysql driver");
    		}
     
    		display("Connection to the Database");
    			con = DatabaseSingleton.getDatabaseSingleton();
    			con.getConnection(true);
    		display("Database is connected");
     
    		display("Execute Request");
    		try{
    			Statement stmt = con.createStatement();
    			result = stmt.executeQuery(request);
    			display("Request succeeded");
    		}catch(SQLException e){
    			stop("Error with the Request Execution");
    		}
     
    		display("Programm End");
    		System.exit(0);
    	}
    }
    Neamoins j'ai un probleme au niveau de :

    Statement stmt = con.createStatement();
    result = stmt.executeQuery(request);
    Eclipse me montre une erreur au niveau du "createStatement"

    Quelqu'un peut il me donne un coup de pouce??

    Merci!

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public static void main(java.lang.String[] args) throws SQLException
    Je suis bien curieux de savoir qui va rattrapper la SQLException qui s'échappe du main. (Je sous-entends sans un arrêt du programme :p)

    Sinon pour le Statement, je ne sais pas...
    Je me demande si votre erreur est une erreur à l'execution, ou à la compilation. Car à la compilation Eclipse donne beaucoup d'indices (normalement) (NetBeans aussi :p)
    Si c'est à l'execution, vous devez au moins nous donner (et connaitre) le nom de l'erreur / exception.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Membre actif Avatar de 3logy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2007
    Messages : 280
    Points : 222
    Points
    222
    Par défaut
    throws Exception a ete enleve!!

    le message d'erreur est le suivant :
    The method createStatement() is undefined for the type DatabaseSingleton

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    createStatement, c'est une méthode de l'objet Connection java, pas de DatabaseSingleton

  9. #9
    Membre actif Avatar de 3logy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2007
    Messages : 280
    Points : 222
    Points
    222
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    createStatement, c'est une méthode de l'objet Connection java, pas de DatabaseSingleton
    Exact!! j'ai voulu faire :

    public class DatabaseSingleton implements MySQLConnection
    ou
    public class DatabaseSingleton implements Connection

    sans succes!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/07/2006, 20h42
  2. [Image]Créer une image avec JAVA 1.1
    Par burno dans le forum 2D
    Réponses: 4
    Dernier message: 11/08/2004, 09h19
  3. Déployer une BDD avec son appli
    Par Albertolino dans le forum Décisions SGBD
    Réponses: 9
    Dernier message: 11/03/2004, 18h08

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