Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur JDBC

Sujet résolu
    30 juillet 2015 à 14:22:33

    Coucou tout le monde :) 

    Voila j'ai un petit soucis dans mon code qui me bloque totalement et du coup je viens solliciter votre aide ! 

    Je vous explique, je suis le cours de Coyote : https://openclassrooms.com/courses/creez-votre-application-web-avec-java-ee/ 
    (qui est vraiment un excellent cours, il m'a permis de me former alors merci beaucoup !! Vraiment super ce cours !!) 

    Donc moi je suis en trin de mettre en relation ma base de données et ma jdbc.

    Je me suis beaucoup inspirer de son cours cependant je l'ai adapté à mon besoin et de plus j'utilise PostgreSql au lieu de MySql comme dans le cours.

    Cependant voici l'erreur généré : 

    juil. 30, 2015 12:36:50 PM org.apache.catalina.core.StandardWrapperValve invoke
    GRAVE: "Servlet.service()" pour la servlet jsp a généré une exception
    com.sdzee.dao.DAOException: org.postgresql.util.PSQLException: ERREUR: la relation � client � n'existe pas
      Position : 101
    	at com.sdzee.dao.ClientDaoImpl.lister(ClientDaoImpl.java:83)
    	at com.sdzee.filters.PrechargementFilter.doFilter(PrechargementFilter.java:49)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    	at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
    	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
    	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
    	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	at java.lang.Thread.run(Unknown Source)
    Caused by: org.postgresql.util.PSQLException: ERREUR: la relation � client � n'existe pas
      Position : 101
    	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2270)
    	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1998)
    	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
    	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:570)
    	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:420)
    	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:305)
    	at com.sdzee.dao.ClientDaoImpl.lister(ClientDaoImpl.java:78)
    	... 21 more

    Le truc c'est que je comprend pas l'erreur, il ne trouve pas ma base de données "Client" ? Pourtant j'ai bien fait attention à l’orthographe quand je l'ai crée, je ne compren vraiment pas l'erreur

    Cela c'est passé quand j'ai commencé à "insérer" le modèle DAO car avant j'était arrivé à insérer des données dans ma base via mon code 

    Je ne peux pas ouvrir mes jsp l'erreur se fait directement.

    Je n'ai pas mis tout ce qui c'est affiché dans la console mais seulement une partie car je pense que c'est seulement ca qui pause problème (je ne suis sur de rien :/) 

    Je suis consciente que je me suis surement mal exprimé mais corrigé moi et j'espère que vous pourrez m'aider

    Si jamais il y a besoin que je vous montre une partie de mon code dites le moi :)

    Encore merci d'avance !! 

     ps : petit screen de l'erreur lorsque je lance la jps (voyez sur le coté l'architecture de mon projet)

    #UnePetiteDébutanteEnInfo :) 

    -
    Edité par ceciliabourvieux 30 juillet 2015 à 15:33:22

    • Partager sur Facebook
    • Partager sur Twitter
      30 juillet 2015 à 16:11:07

      Oh j'ai résolu mon problème ! Je ne sais pas comment mais je présume que je devait avoir un problème dans mon fichier xml car j'ai continuer la suite du cours et j'ai utiliser les annotations et ca marche ! :D

      Cependant biensur, nouveau probleme ! Lors de l'inscription, on me dis que : 

      "L'indice de la colonne est hors limite : 7, nombre de colonnes : 6."

      Quelqu'un pourrai m'expliquer ce que cela veut dire ? 

      • Partager sur Facebook
      • Partager sur Twitter
        30 juillet 2015 à 16:32:39

        Tu as pensé à compter en commencant par 0 et non par 1 ?
        • Partager sur Facebook
        • Partager sur Twitter
          30 juillet 2015 à 16:38:40

          Bonjour :)

          Je suis désolé mais ... compter quoi ? :s

          • Partager sur Facebook
          • Partager sur Twitter
            30 juillet 2015 à 16:42:25

            Peux tu faire passer la stack de ton erreur ainsi que la partie du code qui explose stp

            • Partager sur Facebook
            • Partager sur Twitter
              30 juillet 2015 à 16:48:57

              Oui mais alors du coup je viens de modifier un petit truc au niveau du code (les '?' il en manquait) et donc l'erreur je l'ai plus mais de retour à "la relation client n'existe pas"

              Je te montre tout ca !

              L'erreur :

              juil. 30, 2015 4:42:58 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
              AVERTISSEMENT: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:ApplicationProximite' did not find a matching property.
              juil. 30, 2015 4:42:58 PM org.apache.catalina.startup.VersionLoggerListener log
              INFOS: Server version:        Apache Tomcat/7.0.63
              juil. 30, 2015 4:42:58 PM org.apache.catalina.startup.VersionLoggerListener log
              INFOS: Server built:          Jun 30 2015 08:08:33 UTC
              juil. 30, 2015 4:42:58 PM org.apache.catalina.startup.VersionLoggerListener log
              INFOS: Server number:         7.0.63.0
              juil. 30, 2015 4:42:58 PM org.apache.catalina.startup.VersionLoggerListener log
              INFOS: OS Name:               Windows 8.1
              juil. 30, 2015 4:42:58 PM org.apache.catalina.startup.VersionLoggerListener log
              INFOS: OS Version:            6.3
              juil. 30, 2015 4:42:58 PM org.apache.catalina.startup.VersionLoggerListener log
              INFOS: Architecture:          x86
              juil. 30, 2015 4:42:58 PM org.apache.catalina.startup.VersionLoggerListener log
              INFOS: Java Home:             C:\JAVA\Environnement
              juil. 30, 2015 4:42:58 PM org.apache.catalina.startup.VersionLoggerListener log
              INFOS: JVM Version:           1.8.0_51-b16
              juil. 30, 2015 4:42:58 PM org.apache.catalina.startup.VersionLoggerListener log
              INFOS: JVM Vendor:            Oracle Corporation
              juil. 30, 2015 4:42:58 PM org.apache.catalina.startup.VersionLoggerListener log
              INFOS: CATALINA_BASE:         C:\JAVA\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
              juil. 30, 2015 4:42:58 PM org.apache.catalina.startup.VersionLoggerListener log
              INFOS: CATALINA_HOME:         C:\JAVA\Tomcat_07\apache-tomcat-7.0.63
              juil. 30, 2015 4:42:58 PM org.apache.catalina.startup.VersionLoggerListener log
              INFOS: Command line argument: -Dcatalina.base=C:\JAVA\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
              juil. 30, 2015 4:42:58 PM org.apache.catalina.startup.VersionLoggerListener log
              INFOS: Command line argument: -Dcatalina.home=C:\JAVA\Tomcat_07\apache-tomcat-7.0.63
              juil. 30, 2015 4:42:58 PM org.apache.catalina.startup.VersionLoggerListener log
              INFOS: Command line argument: -Dwtp.deploy=C:\JAVA\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
              juil. 30, 2015 4:42:58 PM org.apache.catalina.startup.VersionLoggerListener log
              INFOS: Command line argument: -Djava.endorsed.dirs=C:\JAVA\Tomcat_07\apache-tomcat-7.0.63\endorsed
              juil. 30, 2015 4:42:58 PM org.apache.catalina.startup.VersionLoggerListener log
              INFOS: Command line argument: -Dfile.encoding=UTF-8
              juil. 30, 2015 4:42:58 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
              INFOS: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\JAVA\Environnement\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/JAVA/Environnement/bin/client;C:/JAVA/Environnement/bin;C:/JAVA/Environnement/lib/i386;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\QuickTime\QTSystem\;C:\Windows\system32\config\systemprofile\.dnx\bin;C:\Program Files\Microsoft DNX\Dnvm\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;C:\Program Files (x86)\MySQL\MySQL Fabric 1.5.4 & MySQL Utilities 1.5.4 1.5\;C:\Program Files (x86)\MySQL\MySQL Fabric 1.5.4 & MySQL Utilities 1.5.4 1.5\Doctrine extensions for PHP\;C:\Program Files (x86)\Java\jdk1.8.0_11\bin ;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\QuickTime\QTSystem\;C:\Windows\system32\config\systemprofile\.dnx\bin;C:\Program Files\Microsoft DNX\Dnvm\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;C:\Program Files (x86)\MySQL\MySQL Fabric 1.5.4 & MySQL Utilities 1.5.4 1.5\;C:\Program Files (x86)\MySQL\MySQL Fabric 1.5.4 & MySQL Utilities 1.5.4 1.5\Doctrine extensions for PHP\;C:\JAVA\Eclipse;;.
              juil. 30, 2015 4:42:58 PM org.apache.coyote.AbstractProtocol init
              INFOS: Initializing ProtocolHandler ["http-bio-8080"]
              juil. 30, 2015 4:42:58 PM org.apache.coyote.AbstractProtocol init
              INFOS: Initializing ProtocolHandler ["ajp-bio-8009"]
              juil. 30, 2015 4:42:58 PM org.apache.catalina.startup.Catalina load
              INFOS: Initialization processed in 312 ms
              juil. 30, 2015 4:42:58 PM org.apache.catalina.core.StandardService startInternal
              INFOS: Démarrage du service Catalina
              juil. 30, 2015 4:42:58 PM org.apache.catalina.core.StandardEngine startInternal
              INFOS: Starting Servlet Engine: Apache Tomcat/7.0.63
              juil. 30, 2015 4:42:58 PM org.apache.catalina.startup.TldConfig execute
              INFOS: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
              juil. 30, 2015 4:42:59 PM org.apache.catalina.startup.TldConfig execute
              INFOS: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
              SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
              SLF4J: Defaulting to no-operation (NOP) logger implementation
              SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
              juil. 30, 2015 4:43:00 PM org.apache.coyote.AbstractProtocol start
              INFOS: Starting ProtocolHandler ["http-bio-8080"]
              juil. 30, 2015 4:43:00 PM org.apache.coyote.AbstractProtocol start
              INFOS: Starting ProtocolHandler ["ajp-bio-8009"]
              juil. 30, 2015 4:43:00 PM org.apache.catalina.startup.Catalina start
              INFOS: Server startup in 1535 ms
              com.sdzee.dao.DAOException: org.postgresql.util.PSQLException: ERREUR: la relation � client � n'existe pas
                Position : 13
              	at com.sdzee.dao.ClientDaoImpl.creer(ClientDaoImpl.java:61)
              	at com.sdzee.forms.InscriptionForm.inscription(InscriptionForm.java:79)
              	at com.sdzee.servlets.inscription.doPost(inscription.java:48)
              	at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
              	at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
              	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
              	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
              	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
              	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
              	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
              	at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
              	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
              	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
              	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
              	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
              	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
              	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
              	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
              	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)
              	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
              	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
              	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
              	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
              	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
              	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
              	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
              	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
              	at java.lang.Thread.run(Unknown Source)
              Caused by: org.postgresql.util.PSQLException: ERREUR: la relation � client � n'existe pas
                Position : 13
              	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2270)
              	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1998)
              	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
              	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:570)
              	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:420)
              	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:366)
              	at com.jolbox.bonecp.PreparedStatementHandle.executeUpdate(PreparedStatementHandle.java:205)
              	at com.sdzee.dao.ClientDaoImpl.creer(ClientDaoImpl.java:50)
              	... 27 more
              

               La partie du code qui je pense foire : 

              package com.sdzee.dao;
              
              import static com.sdzee.dao.DAOUtilitaire.fermeturesSilencieuses;
              import static com.sdzee.dao.DAOUtilitaire.initialisationRequetePreparee;
              
              import java.sql.Connection;
              import java.sql.PreparedStatement;
              import java.sql.ResultSet;
              import java.sql.SQLException;
              import java.util.ArrayList;
              import java.util.List;
              
              import com.sdzee.beans.Client;
              
              public class ClientDaoImpl implements ClientDao {
              
                  private static final String Sql_Select        = "SELECT id, pseudo, motdepasse, email, nom, prenom, adresse, ville, codepostal, pays, telephone FROM Client ORDER BY id";
                  private static final String Sql_Select_Par_Id = "SELECT id, pseudo, motdepasse, email, nom, prenom, adresse, ville, codepostal, pays, telephone FROM Client WHERE id = ?";
                  private static final String Sql_Insert       = "INSERT INTO Client (pseudo, motdepasse, email, nom, prenom, adresse, ville, codepostal, pays, telephone) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
                  private static final String Sql_Delete_Par_Id = "DELETE FROM Client WHERE id = ?";
              
                  private DAOFactory          daoFactory;
              
                  ClientDaoImpl( DAOFactory daoFactory ) {
                      this.daoFactory = daoFactory;
                  }
              
                  /* Implémentation de la méthode définie dans l'interface ClientDao */
                  @Override
                  public Client trouver( long id ) throws DAOException {
                      return trouver( Sql_Select_Par_Id, id );
                  }
              
                  /* Implémentation de la méthode définie dans l'interface ClientDao */
                  @Override
                  public void creer( Client Client ) throws DAOException {
                      Connection connexion = null;
                      PreparedStatement preparedStatement = null;
                      ResultSet valeursAutoGenerees = null;
              
                      try {
                          connexion = daoFactory.getConnection();
                          preparedStatement = initialisationRequetePreparee( connexion, Sql_Insert, true,
                                  Client.getPseudo(), Client.getMotDePasse(),
                                  Client.getEmail(), Client.getNom(), 
                                  Client.getPrenom(), Client.getAdresse(), 
                                  Client.getVille(), Client.getCode(),
                                  Client.getPays(), Client.getTelephone() );
                    
                          int statut = preparedStatement.executeUpdate();
                          if ( statut == 0 ) {
                              throw new DAOException( "Échec de la création du Client, aucune ligne ajoutée dans la table." );
                          }
                          valeursAutoGenerees = preparedStatement.getGeneratedKeys();
                          if ( valeursAutoGenerees.next() ) {
                              Client.setId( valeursAutoGenerees.getLong( 1 ) );
                          } else {
                              throw new DAOException( "Échec de la création du Client en base, aucun ID auto-généré retourné." );
                          }
                      } catch ( SQLException e ) {
                          throw new DAOException( e );
                      } finally {
                          fermeturesSilencieuses( valeursAutoGenerees, preparedStatement, connexion );
                      }
                  }
              
                  /* Implémentation de la méthode définie dans l'interface ClientDao */
                  @Override
                  public List<Client> lister() throws DAOException {
                      Connection connection = null;
                      PreparedStatement preparedStatement = null;
                      ResultSet resultSet = null;
                      List<Client> Clients = new ArrayList<Client>();
              
                      try {
                          connection = daoFactory.getConnection();
                          preparedStatement = connection.prepareStatement( Sql_Select );
                          resultSet = preparedStatement.executeQuery();
                          while ( resultSet.next() ) {
                              Clients.add( map( resultSet ) );
                          }
                      } catch ( SQLException e ) {
                          throw new DAOException( e );
                      } finally {
                          fermeturesSilencieuses( resultSet, preparedStatement, connection );
                      }
              
                      return Clients;
                  }
              
                  /* Implémentation de la méthode définie dans l'interface ClientDao */
                  @Override
                  public void supprimer( Client Client ) throws DAOException {
                      Connection connexion = null;
                      PreparedStatement preparedStatement = null;
              
                      try {
                          connexion = daoFactory.getConnection();
                          preparedStatement = initialisationRequetePreparee( connexion, Sql_Delete_Par_Id, true, Client.getId() );
                          int statut = preparedStatement.executeUpdate();
                          if ( statut == 0 ) {
                              throw new DAOException( "Échec de la suppression du Client, aucune ligne supprimée de la table." );
                          } else {
                              Client.setId( null );
                          }
                      } catch ( SQLException e ) {
                          throw new DAOException( e );
                      } finally {
                          fermeturesSilencieuses( preparedStatement, connexion );
                      }
                  }
              
                  /*
                   * Méthode générique utilisée pour retourner un Client depuis la base de
                   * données, correspondant à la requête SQL donnée prenant en paramètres les
                   * objets passés en argument.
                   */
                  private Client trouver( String sql, Object... objets ) throws DAOException {
                      Connection connexion = null;
                      PreparedStatement preparedStatement = null;
                      ResultSet resultSet = null;
                      Client Client = null;
              
                      try {
                          /* Récupération d'une connexion depuis la Factory */
                          connexion = daoFactory.getConnection();
                          /*
                           * Préparation de la requête avec les objets passés en arguments
                           * (ici, uniquement un id) et exécution.
                           */
                          preparedStatement = initialisationRequetePreparee( connexion, sql, false, objets );
                          resultSet = preparedStatement.executeQuery();
                          /* Parcours de la ligne de données retournée dans le ResultSet */
                          if ( resultSet.next() ) {
                              Client = map( resultSet );
                          }
                      } catch ( SQLException e ) {
                          throw new DAOException( e );
                      } finally {
                          fermeturesSilencieuses( resultSet, preparedStatement, connexion );
                      }
              
                      return Client;
                  }
              
                  /*
                   * Simple méthode utilitaire permettant de faire la correspondance (le
                   * mapping) entre une ligne issue de la table des Clients (un ResultSet) et
                   * un bean Client.
                   */
                  private static Client map( ResultSet resultSet ) throws SQLException {
                      Client Client = new Client();
                      Client.setId( resultSet.getLong( "id" ) );
                      Client.setPseudo( resultSet.getString( "pseudo" ) );
                      Client.setMotDePasse( resultSet.getString( "motdepasse" ) );
                      Client.setEmail( resultSet.getString( "email" ) );
                      Client.setNom( resultSet.getString( "nom" ) );
                      Client.setPrenom( resultSet.getString( "prenom" ) );
                      Client.setAdresse( resultSet.getString( "adresse" ) );
                      Client.setVille( resultSet.getString( "ville" ) );
                      Client.setCode( resultSet.getString( "codepostal" ) );
                      Client.setPays( resultSet.getString( "Pays" ) );
                      Client.setTelephone( resultSet.getString( "telephone" ) );
                      return Client;
                  }
              
              }



              -
              Edité par ceciliabourvieux 30 juillet 2015 à 16:54:55

              • Partager sur Facebook
              • Partager sur Twitter
                31 juillet 2015 à 8:09:51

                Essayes d'enlever les majuscules à tes nom de tables et dis moi ce que ca donne ;)
                • Partager sur Facebook
                • Partager sur Twitter
                  31 juillet 2015 à 9:41:10

                  J'ai essayé je sais pas trop ce que ça donne car j'ai plein de "Client" dans mon code différent et je ne suis pas sur de bien tout avoir changé :/ 
                  Le problème c'est que la mon code me génère une autre erreur encore :( donc pour celle ci je sais pas ce qu'il en est
                  Pour mon autre erreur je ne sais pas si tu vas pouvoir m'aider, c'est un problème avec ma base de données
                  Je t'explique quand même :


                  Voici mon formulaire :  Et voici mon script sql sur postgre : 

                  -- Table: client
                  
                  -- DROP TABLE client;
                  
                  CREATE TABLE client
                  (
                    id integer NOT NULL DEFAULT nextval('"Client_id_seq"'::regclass),
                    pseudo character varying(30) NOT NULL,
                    motdepasse character varying(20) NOT NULL,
                    email character varying(60) NOT NULL,
                    nom character(35) NOT NULL,
                    prenom character(25) NOT NULL,
                    adresse character varying(45) NOT NULL,
                    ville character(25) NOT NULL,
                    code integer NOT NULL,
                    pays character(20) NOT NULL,
                    telephone integer NOT NULL,
                    CONSTRAINT "Client_pkey" PRIMARY KEY (id)
                  )
                  WITH (
                    OIDS=FALSE
                  );
                  ALTER TABLE client
                    OWNER TO "Incitat";
                  COMMENT ON TABLE client
                    IS 'Permet de se connecter à l''application';

                  Je ne sais pas si tu t'y connais en sql je me doute que la vraiment je suis sur le mauvais forum mais j'explique quand même si quelqu'un peux m'aider : j'ai voulu généré un id qui s’incrémente automatiquement, le problème c'est que comme il est définit en tant que clé primaire et bha j'ai l'impression que l'auto incrémentation ne se fait pas :/ car voici l'erreur généré : 

                  INFOS: Server startup in 1465 ms
                  com.sdzee.dao.DAOException: org.postgresql.util.PSQLException: ERREUR: la colonne � code � est de type integer mais l'expression est de type character varying
                    Indice : Vous devez r��crire l'expression ou lui appliquer une transformation de type.
                    Position : 136
                  	at com.sdzee.dao.ClientDaoImpl.creer(ClientDaoImpl.java:61)
                  	at com.sdzee.forms.InscriptionForm.inscription(InscriptionForm.java:79)
                  	at com.sdzee.servlets.inscription.doPost(inscription.java:48)
                  	at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
                  	at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
                  	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
                  	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
                  	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
                  	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
                  	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
                  	at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
                  	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
                  	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
                  	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
                  	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
                  	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
                  	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
                  	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
                  	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)
                  	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
                  	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
                  	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
                  	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
                  	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
                  	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
                  	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
                  	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
                  	at java.lang.Thread.run(Unknown Source)
                  Caused by: org.postgresql.util.PSQLException: ERREUR: la colonne � code � est de type integer mais l'expression est de type character varying
                    Indice : Vous devez r��crire l'expression ou lui appliquer une transformation de type.
                    Position : 136
                  	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2270)
                  	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1998)
                  	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
                  	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:570)
                  	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:420)
                  	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:366)
                  	at com.jolbox.bonecp.PreparedStatementHandle.executeUpdate(PreparedStatementHandle.java:205)
                  	at com.sdzee.dao.ClientDaoImpl.creer(ClientDaoImpl.java:50)
                  	... 27 more

                  Je pense que comme je ne rentre pas d'id dans mon formulaire et bien il décale mes colonnes et du coup il décale pour mon code postal et comme il n'est pas du même type et bien ça ne marche pas (j'espère que vous me comprenez, je fais au mieux ! :/)

                  Enfin voila c'est un bazard ! Peut être le plus simple est que j'enlève l'id, je voulais le mettre car cela aurai été peut être plus simple de retrouver un client par son id mais cela n'est pas vraiment nécessaire au bon déroulement de l'application je pense, c'était un petit plus

                  En tout cas merci Pandalol de m'aider :)
                  Et merci d'avance aux autres :) 

                  • Partager sur Facebook
                  • Partager sur Twitter
                    31 juillet 2015 à 10:09:10

                    Non mais quand je te parlais de majuscules, je te parlais dans le code mais aussi dans postgres !

                    Je suis au boulot la donc je reponds rapidement, je prendrais le temps de regarder ton probleme plus tard ;).

                    Pour l'auto increment sur PG, tu devrais trouver ton bohneur ici : http://stackoverflow.com/questions/787722/postgresql-autoincrement

                    En lisant très rapidement, il semblerait que tu essayes d'enregistrer des Strings dans des champs integer. Donc soit tu modifies ta DAO pour typer correctement tes variables, soit tu alter ta table pour prendre que des varchar. (la premiere solution est plus adapter, tu auras en base des données cohérentes ;)).

                    -
                    Edité par pandalol 31 juillet 2015 à 10:13:42

                    • Partager sur Facebook
                    • Partager sur Twitter
                      31 juillet 2015 à 10:14:40

                      oui oui j'avais bien compris, je l'ai changer dans postgres :) 
                      j'ai que 1 table donc c'est pas trop compliqué :p
                      d'accord, je vais essayer d'appliquer ce que tu me dis la et je te dis ce que ca donne ;) 

                      Merci :)

                      -
                      Edité par ceciliabourvieux 31 juillet 2015 à 10:16:03

                      • Partager sur Facebook
                      • Partager sur Twitter
                        31 juillet 2015 à 10:24:36

                        Quand je vois ca :

                        CONSTRAINT "Client_pkey"

                        je me dis qu'il y a encore pas mal de maj qui doivent trainer ;)

                        • Partager sur Facebook
                        • Partager sur Twitter
                          31 juillet 2015 à 10:42:28

                          Oui en relisant après coup j'ai vu je l'ai modifier :) désolé :s
                          Du coup dans ma table y'a plus de maj, dans mon code je sais pas trop :/

                          Alors en regardant bien j'ai compris ce que tu veux me dire mais j'avais déjà voulu essayer de modifier ca et je n'y arrive pas 
                          J'ai bien pour "code" un type string mais pour le passer en int il me génère plein plein d'erreur en rouge et je sais pas trop comment résoudre tout ca :/

                          Alors j'ai d'abord un fichier : "ClientDaoImpl.java"

                          client.setCode( resultSet.getString( "code" ) );

                          Donc quand je change le String en Int, une erreur sur le set code, alors dans mon fichier "client.java"

                          public void setCode( String code) {
                               this.code = code;
                          }
                          public String getCode() {
                              return code;   


                          Donc pareil, je change les String en Int, et la erreur sur "code" (en rouge), donc plus haut dans ce même fichier je change pareil string en int : 

                          private String code;

                          Et là erreur dans mon fichier "InscriptionForm.java" :

                          /* Validation du champ codepostal  */
                              private void traiterCode( String code, Client client ) {
                                  try {
                                      validationCode( code );
                                  } catch ( FormValidationException e) {
                                      setErreur( Champ_CP, e.getMessage() );
                                  }
                                  Client.setCode( code );
                              }

                          Meme refrain : change string en int et erreur sur le "validationCode" donc modification de ce code : 

                          /* Valide le code postal saisis */
                              private void validationCode( String code ) throws FormValidationException {
                                  if ( code != null ) {
                                      if ( !code.matches( "^\\d+$" ) ) {
                                          throw new FormValidationException( "Le code postal doit uniquement contenir des chiffres" );
                                      } else if ( code.length() < 5 ) {
                                          throw new FormValidationException( "Le code postal doit contenir 5 chiffres" );
                                      }
                                  } else {
                                      throw new FormValidationException( "Merci d'entrer votre code postal " );
                                  }
                              } 


                          et du coup erreur sur " code != null" ; "code.matches" et "code.length" qui doivent être des caractéristique adapté uniquement au string non ? 

                          Et même erreur dans mon fichier "ClientDaoImpl.java" : (en rouge) 

                          client.setCode( resultSet.getInt( "code" ) );

                          Donc je sais pas trop comment faire :( avant cela marchait mais je n'avais pas la bdd en jeu :/

                          Je vais me renseigner déjà sur le lien que tu m'a fournis et voila :) 
                           

                          -
                          Edité par ceciliabourvieux 31 juillet 2015 à 10:44:26

                          • Partager sur Facebook
                          • Partager sur Twitter
                            31 juillet 2015 à 10:48:19

                            Du coup je vais peut être adapter ta deuxième solution!!

                            Je te tiens au courant :)

                            -
                            Edité par ceciliabourvieux 31 juillet 2015 à 10:48:35

                            • Partager sur Facebook
                            • Partager sur Twitter
                              31 juillet 2015 à 10:57:40

                              La deuxième solution est vraiment parfaite !! 
                              De toute façon l’utilisateur ne peux rentrer que des nombre car comme tu as pu le voir dans mon code  j'ai mis des conditions pour le remplissage du formulaire !

                              C'est super !!!!!!!! Je suis trop trop trop trop contente !!

                              Mercii, mercii beaucoup tu m'as beaucoup aidé

                              C'était des petites erreurs bêtes mais auxquels je n'avais pas pensé et qui faisait beuger tout mon code ! 

                              Encore merci vraiment !! 

                              Je vois que j'ai encore quelques erreurs (genre que chaque client ne peux s'inscrire qu'une fois(la c'est pas du tout le cas :s), que lorsque l'on est pas enregistrer dans la bdd on ne peux pas se connecter, etc) mais je vais me débrouiller pour la suite

                              MERCIIIIIIIIIIIIIIII :D  

                              -
                              Edité par ceciliabourvieux 31 juillet 2015 à 11:04:23

                              • Partager sur Facebook
                              • Partager sur Twitter
                                31 juillet 2015 à 11:20:36

                                Content d'avoir pu t'aider :).

                                Tu aurais pu aussi laisser le type Integer dans ta base, laisser le code en String et faire un : 

                                 Integer.parseInt(resultSet.getString( "codepostal"))

                                pour chaques champs qui ont besoin d'un Integer.

                                Bon courage pour la suite :)

                                -
                                Edité par pandalol 31 juillet 2015 à 11:24:57

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  31 juillet 2015 à 11:30:13

                                  D'accord, merci pour cette ligne de code, je pense que cela pourra m'aider :)

                                  Merci :) 

                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Erreur JDBC

                                  × 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