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

JDBC Java Discussion :

Manipuler une base de données MySQL à partir d'Eclipse


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 104
    Points : 59
    Points
    59
    Par défaut Manipuler une base de données MySQL à partir d'Eclipse
    bonsoir,
    j'ai réussi à établir une connexion entre mysql server et eclipse.
    mon problème est le suivant
    j'ai besoin de savoir comment manipuler une base de données dans mysql à partir de eclipse (afficher les éléments d’une table, modifier,….)

    j'ai crée une classe java pour afficher les élément d'une table mais j'ai erreur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Etat HTTP 404 - 
     
    --------------------------------------------------------------------------------
     
    type Rapport d'état
     
    message 
     
    description La ressource demandée () n'est pas disponible.
     
     
    --------------------------------------------------------------------------------
     
    Apache Tomcat/6.0.35
    ma classe java est la suivante :
    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
     
    import java.sql.*;
    public class TutoSQL {
     
    public static void main(){
    	Connection laConnection;
    	Statement transmission;
    	ResultSet leResultat;
    	try{
    		Class.forName("com.mysql.jdbc.Driver");
    		//laConnection=DriverManager.getConnection("jbc:mysql://localhost:3306/sql","root","");
    		laConnection=DriverManager.getConnection("jdbc:odbc:voyage","root","");
    		transmission = laConnection.createStatement();
    		leResultat = transmission.executeQuery("select * from horaire");
    		while(leResultat.next()){
    			//System.out.println("nom : " + leResultat.getString("nom")+ "Age : " + leResultat.getInt("age"));
    			System.out.println("jour : " + leResultat.getString("jour")+ "heure : " + leResultat.getInt("heure"));
    		}
    	}catch(Exception e)
    	{
    		System.out.print("impossible");
    	}
    	}
    }
    merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Le main n'est d'aucune utilitée pour une application déployée sous Tomcat.
    Il n'est utilisé que pour les applications java standard.

    D'ailleurs, Tomcat ne sait absolument pas quoi faire quand tu lui demande une URL, vu que tu ne lui indiques pas quelle classe doit traiter quel chemin.

    Je te conseille de lire un cour sur la programmation web en java avant de partir à l'aveugle comme tu le fais....


    Voici un tutoriel qui explique exactement ce dont tu as besoin.

    http://www.vogella.com/articles/EclipseWTP/article.html
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 104
    Points : 59
    Points
    59
    Par défaut
    merci pour votre réponse et attention,
    j'ai remplacé main par test mais j'ai la même problème.
    svp dite-moi comment faire pour afficher le contenue de la table.
    merci d'avance.

  4. #4
    Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Octobre 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 46
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par sousou12 Voir le message
    merci pour votre réponse et attention,
    j'ai remplacé main par test mais j'ai la même problème.
    svp dite-moi comment faire pour afficher le contenue de la table.
    merci d'avance.
    Salut,

    généralement pour gérer la connexion et intéractions avec une BDD on utilise des méthodes séparées. Voilà pourquoi déjà , je te propose la méthode suivante a mettre a part dans ta 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
    public Connection connection() 
    	{
    		try {
     
    				Class.forName("com.mysql.jdbc.Driver").newInstance();
     
    				String bdd_name="voyage";
    				String urlBd ="jdbc:mysql://localhost/"+bdd_name;
    				String user="root";
    				String passwordBd="";
     
    				try {
    						System.out.println("Connection a la base de données");
    						Connection conn = DriverManager.getConnection(urlBd,user,passwordBd);
    						System.out.println("Base de données connectée");
    						System.out.println("------------------------------------------");
    						System.out.println("Préparation a la connexion");
    						System.out.println("------------------------------------------");	
    						return conn;
     
    					} 
    					catch (SQLException ex) 
    					{
    						// la connection a la base de données n'a pas pu etre établi
    						// voici les codes erreurs retournés 
    						System.out.println("SQLException: " + ex.getMessage()); 
    						System.out.println("SQLState: " + ex.getSQLState()); 
    						System.out.println("VendorError: " + ex.getErrorCode()); 
    					}
    			} 
    			catch (Exception ex) 
    			{ 
    	           // Le driver n'a pas pu être chargé
    	           // vérifier que la variable CLASSPATH est bien renseignée
    	           System.out.println("Echec de chargement du driver");
    			}
     
    		return null;	
    	}
    Ensuite, pour faire des opérations de type SELECT on utilise preparedStatement plutôt que createStatement, voici donc une deuxième méthode adaptée à la 1ère fourni pour réaliser le traitement que tu veux :

    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
     
    	public ArrayList<String> getHoraireInformations() 
    	{
    		Connection conn = connection();
    		PreparedStatement prepare = null;
     
    		// ta list de résultat
        		ArrayList<String> myRes = new ArrayList<String>();
     
                    // tes 4 champs que tu veux requêter !
    		String nom = null;
    		int age = 0;
    		String jour=  null;
    		int heure= 0;
     
    		try {
    			// j'ai modifié ta requête car tu ne dis pas si tu as d'autres champs dans ta table horaire, ni si ils sont dans le bon ordre donc comme ca au
    			// moins ca marche du premier coup !!
    			String query="select nom,age,jour,heure from horaire";	
    			prepare = conn.prepareStatement(query);
     
    			ResultSet resultat =  prepare.executeQuery();
     
    			while(resultat.next())
    			{	
    				nom = resultat.getString(1);  
    				age = resultat.getInt(2);
    				jour = resultat.getString(3);
    				heure = resultat.getInt(4);
    				// j'ai mis ce format la comme ca tu peux récup' une seule liste exploitable derrière avec un String tokenizer ou un simple split en parcourant le tableau
    				// bien sur cette méthode est loin d'être optimale mais encore une fois ^^ elle marche :) ! 
    				myRes.add(nom+"-"+age+"-"+jour+"-"+heure);
    			}		
     
    			resultat.close();
    			prepare.close();
    			conn.close();	
     
    		} 
    		catch (SQLException e) 
    		{
    			e.printStackTrace();
    		}
     
    		return myRes;
    	}
    et enfin la classe main d'appel !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
           public class Launcher {
                    public static void main (String args[]) {
                            Database voyages = new Database();
                            ArrayList<String> resList = voyages.getHoraireInformations();
     
    		for(int i = 0 ; i< resList.size();i++) {
    			String [] infos = resList.get(i).split("-");
    			System.out.println("nom : "+infos[0]+" Age : "+infos[1]);
    			System.out.println("jour : "+infos[2]+" heure : "+infos[3]);
    			System.err.println("---------------------------------------");
                    }
          }
    ah oui et petite précision il te faut donc une classe a part que tu appelles Database comme dans mon exemple, sinon tu l'appelles comme tu veux mais faut renommer en conséquence le code que jt'ai écrit !
    Cette classe Database contiendra donc comme suit les méthodes présentées antérieurement :

    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
     
    import java.sql.Connection;
     
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
     
    public class DataBase {
     
           public DataBase()
    	{
     
    	}
     
     
            public Connection connection()  {
             // mettre ici le contenu de la méthode connection que j'ai présentée au début        
           }
     
            public ArrayList<String> getHoraireInformations()  {
            // mettre ici le contenu de la méthode getHoraireInformations
            }
    }
    Méthode testée et approuvée :p bon implé !!!

    ++

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/07/2015, 12h08
  2. Réponses: 2
    Dernier message: 02/09/2010, 09h59
  3. Réponses: 1
    Dernier message: 07/08/2010, 12h55
  4. Réponses: 1
    Dernier message: 19/07/2007, 21h09
  5. Menu deroulant creer a partir d'une base de donnée mysql
    Par schwinny dans le forum Requêtes
    Réponses: 9
    Dernier message: 28/06/2006, 15h48

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