Précédent   Forum du club des développeurs et IT Pro > Java > Général Java > JDBC
JDBC Forum d'entraide sur l'API JDBC (Java Database Connectivity) et l'accès aux bases de données. Avant de poster -> FAQ JDBC
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 14/12/2012, 17h00   #1
sousou12
Candidat au titre de Membre du Club
 
Femme
Étudiant
Inscription : mars 2012
Messages : 53
Détails du profil
Informations personnelles :
Sexe : Femme

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : mars 2012
Messages : 53
Points : 14
Points : 14
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 :
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 :
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
sousou12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 18h26   #2
sinok
Modérateur
 
Avatar de sinok
 
Inscription : août 2004
Messages : 8 636
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2004
Messages : 8 636
Points : 12 437
Points : 12 437
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.
sinok est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/12/2012, 21h35   #3
sousou12
Candidat au titre de Membre du Club
 
Femme
Étudiant
Inscription : mars 2012
Messages : 53
Détails du profil
Informations personnelles :
Sexe : Femme

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : mars 2012
Messages : 53
Points : 14
Points : 14
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.
sousou12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2012, 16h06   #4
luffy27
Membre du Club
 
Homme
Chercheur en informatique
Inscription : 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 : 45
Points : 45
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 :
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 :
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 :
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 :
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é !!!

++
luffy27 est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 17h14.


 
 
 
 
Partenaires

Hébergement Web