Partage
  • Partager sur Facebook
  • Partager sur Twitter

SQL Type Connection

A result type connection

Sujet résolu
    9 mai 2008 à 19:59:30

    Bonsoir,

    Dans le cadre de nos cours, nous avons un projet Java, module programmation et je rencontre actuellement des problèmes ...
    Notre programme et en fait constitué d'un menu textuel et de différentes méthodes correspondants à des requêtes SQL. J'ai créer deux méthodes, une de connexion et une de déconnexion, c'est là que je rencontre un problème. Voici mon code :
    public Connection connexion() {
    		
    	try {
    		Class.forName("com.mysql.jdbc.Driver");
    		return DriverManager.getConnection("jdbc:mysql://localhost/BDD","login", "MDP");
    	}catch (Exception e) { 
    		e.printStackTrace();
    	}
    }
    

    J'ai cette erreur, et j'ai tout essayé je ne comprends pas pourquoi ça ne marche pas ...
    Erreur : "This method must return a result of type Connection"

    Merci d'avance pour la solution,
    Tikiwi.
    • Partager sur Facebook
    • Partager sur Twitter
      9 mai 2008 à 20:58:27

      Ta fonction doit retourner un type Connection.
      S'il n'y a pas d'exception tu retourne un objet. En cas d'exception, il n'y a pas de return d'où l'erreur.
      • Partager sur Facebook
      • Partager sur Twitter
        9 mai 2008 à 21:11:42

        Je ne suis pas sûr d'avoir tout compris.
        Je pensais que justement ma variable con retournait un type Connection mais apparemment ce n'est pas le cas.
        Sinon quand tu dis "on retourne un objet", ça veut dire quoi exactement ? Un objet à une valeur ?

        En fait on avait un fichier d'exemple (connexion + exemples + déconnexion) et moi j'aimerais l'adapter en dissociant connexion et déconnexion. Voilà le code complet, j'ai essayé pas mal de choses mais je rencontre tout le temps des erreurs.
        try{
        	System.out.println("Test de requete");
        			
        	Statement stmt;
        	ResultSet rs;
        	String requete,nom,prenom,numeroEtudiant,adresse;
        	int update;
        			
        	//connexion
        	Class.forName("com.mysql.jdbc.Driver");
        	String url ="jdbc:mysql://src-mysql/BDD";
        	System.out.println("Connexion à la base de donnees");
        	Connection con = DriverManager.getConnection(url,"login", "mdp");
        	System.out.println("Connecté");
        	stmt = con.createStatement();
        
        	//Requête insertion
        	requete="INSERT INTO etu_etudiant (numeroEtudiant,nom,prenom,id_adresse) VALUES ('000','Convenant','Jean-Claude','dans son camping-car')";
        	update = stmt.executeUpdate(requete);
        	System.out.println("update="+update);
        			
        			
        	//deconnexion
        	con.close();
        			
        }catch (Exception e) { 
        	e.printStackTrace();
        }
        

        Je veux donc dissocier les deux en faisant deux méthodes. Merci.
        • Partager sur Facebook
        • Partager sur Twitter
          9 mai 2008 à 21:24:44

          En gros tu doit mettre en return après ton try catch :
          public Connection connexion() {
          		Connection con = null ;	
          		try {
          			Class.forName("com.mysql.jdbc.Driver");
          			con = DriverManager.getConnection("jdbc:mysql://localhost/BDD","login", "MDP");
          		}catch (Exception e) { 
          			e.printStackTrace();
          		} finally{
          			return con ;
          		}
          	}
          
          • Partager sur Facebook
          • Partager sur Twitter
            9 mai 2008 à 21:46:52

            J'ai essayé ça ne marche pas :(
            Eclipse me renvoie cette erreur :

            java.lang.NoSuchMethodError: main
            Exception in thread "main"


            Sinon il met met aussi que "finnaly block does not complete normally".
            C'est trop la galère ce code, juste pour séparer connexion et déconnexion !

            En tout cas, merci pour l'aide.
            Tikiwi.
            • Partager sur Facebook
            • Partager sur Twitter
              9 mai 2008 à 21:55:53

              As-tu mis une méthode main dans ton programme ?

              [EDIT]
              Voilà une fonction connexion correcte.
              public Connection connexion() {
              		Connection con = null ;	
              		try {
              			Class.forName("com.mysql.jdbc.Driver");
              			con = DriverManager.getConnection("jdbc:mysql://localhost/BDD","login", "MDP");
              		}catch (Exception e) { 
              			e.printStackTrace();
              		}
              		return con ;
              	}
              
              • Partager sur Facebook
              • Partager sur Twitter
                9 mai 2008 à 22:08:15

                Oui c'est mon programme principal d'où j'appelle mes autres class situées dans des autres fichiers.
                J'ai un fichier main.java avec le programme principal, un fichier SQL.java avec mes méthodes de connexion et déconnexion, un fichier Clavier avec mes méthodes de lecture de flux clavier, un fichier gestion.java (encore des méthodes) et menu.java qui contient une méthode pour d'afficher le menu du main.java.

                Mes erreurs actuels se situent dans SQL.java qui contient mes méthodes de connexion et déconnexion.

                Edit : Ton code ne me fait plus d'erreurs au niveau de la syntaxe par contre ça ne marche toujours pas :D Eclipse me renvoie l'erreur que j'ai écrite ci-dessus.
                Voilà mes deux méthodes complètes :
                import java.sql.*;
                
                public class SQL {
                	
                	public static Connection connexion() {
                		Connection con = null ;	
                		try {
                			Class.forName("com.mysql.jdbc.Driver");
                			con = DriverManager.getConnection("jdbc:mysql://localhost/BDD","login", "MDP");
                		}catch (Exception e) { 
                			e.printStackTrace();
                		}
                		return con ;
                	}
                
                	public static void Deconnexion(Connection con) {
                		try {
                			con.close();
                		}catch (Exception e) { 
                			e.printStackTrace();
                		}
                	}
                	
                }
                

                Et mon fichier gestion.java qui n'est pas encore complet :
                import java.sql.*;
                
                public class Gestion {
                
                	public static void creation() {
                		
                		int i = 0, update;
                		String requete;
                		Statement stmt;
                		Connection con;
                		
                		// Requete
                		System.out.println("---| Entrez le numéro de l'étudiant");
                		String nE = Clavier.readString();
                		System.out.println("---| Entrez le nom de l'étudiant");
                		String nom = Clavier.readString();
                		System.out.println("---| Entrez le prénom de l'étudiant");
                		String prenom = Clavier.readString();
                		System.out.println("---| Entrez l'id adresse de l'étudiant");
                		String id_adresse = Clavier.readString();
                		
                		// Insertion
                		
                		con = SQL.connexion(); // Connexion 
                	
                		requete="INSERT INTO etu_etudiant (numeroEtudiant,nom,prenom,id_adresse) VALUES ('"+nE+"','"+nom+"','"+prenom+"','"+id_adresse+"')";
                		//update = stmt.executeUpdate(requete);
                		//System.out.println("update = "+update);
                		
                		SQL.Deconnexion(con);
                	}
                }
                

                Voilà.
                • Partager sur Facebook
                • Partager sur Twitter
                  9 mai 2008 à 22:21:23

                  Le code suivant :
                  java.lang.NoSuchMethodError: main
                  Exception in thread "main"
                  veut dire qu'il ne trouve pas la méthode main.

                  Tu as quoi d'autre comme erreur dans la classe SQL ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    9 mai 2008 à 22:40:20

                    En fait ça y' est j'ai réussi à tout corriger les erreurs et non sans mal !
                    En tout cas merci beaucoup pour ton aide, je posterai de nouveau si j'en rencontre d'autres. :)

                    Bonne soirée,
                    Tikiwi.

                    PS : Une des erreurs vraiment TRES²² bête est d'avoir oublier d'ouvrir WAMP pour tester :D Mais ce n'est pas ça qui bloquait sincèrement c'était bel et bien dans les méthodes, donc encore merci.
                    • Partager sur Facebook
                    • Partager sur Twitter

                    SQL Type Connection

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown