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

Développement Web en Java Discussion :

Accès base de données SGBD erreur.


Sujet :

Développement Web en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 277
    Par défaut Accès base de données SGBD erreur.
    Bonjour,

    J'aimerais charger le contenu d'un menu déroulant à partir d'une requête SELECT. J'utilise le modele DAO , et la librairie JSTL.

    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
    48
    public List<Articles> chargementListArticlesFamille()
    			throws DAOException {
     
     
    		// TODO Auto-generated method stub
    		// Implémentation de la méthode définie dans l'interface ArticleDao 
     
     
    		Connection connexion = null;
    		PreparedStatement preparedStatement = null;
    		ResultSet resultSet = null;
    		Articles article = null;
     
    		Statement statement = null;
     
    		try {
    			// Récupération d'une connexion depuis la Factory 
    			connexion = daoFactory.getConnection();
    			System.out.println("execution de la requete SQL !");
    			System.out.println("Requete :"+SQL_SELECT_PAR_FAMILLE);
    			preparedStatement = initialisationRequetePreparee( connexion, SQL_SELECT_PAR_FAMILLE, false );
    			statement = connexion.createStatement();
     
     
    			resultSet = preparedStatement.executeQuery();
    			// Parcours de la ligne de données de l'éventuel ResulSet retourné 
    			articlesFam.clear();
     
     
    			while ( resultSet.next() ) {
    				//Voir probleme resultSet pour recherche Famille
    				article = map( resultSet );
    				articlesFam.add(article);
    			}
     
     
    		} catch ( SQLException e ) {
    			System.out.println("erreur dans la requete !");
    			System.out.println("erreur"+e.getMessage());
    			throw new DAOException( e );
     
    		} finally {
    			System.out.println("fermeture de la connection !");
    			fermeturesSilencieuses( resultSet, preparedStatement, connexion );
    		}
    		return articles;
     
    	}
    Lorsque que j'execute ma requete qui est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private static final String SQL_SELECT_PAR_FAMILLE = "SELECT DISTINCT A.A1FAM FROM PGVMARTM A";
    J'obtiens ce message d'erreur :

    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
    Requete :SELECT DISTINCT A.A1FAM FROM PGVMARTM A
    erreur dans la requete !
    erreurAn undefined column name was detected.
    fermeture de la connection !
    5 avr. 2013 13:53:28 org.apache.catalina.core.StandardWrapperValve invoke
    GRAVE: "Servlet.service()" pour la servlet AfficheArticles a généré une exception
    org.omega.dao.DAOException: java.sql.SQLException: An undefined column name was detected.
    	at org.omega.dao.ArticleDaoImpl.chargementListArticlesFamille(ArticleDaoImpl.java:184)
    	at org.omega.forms.RechercheArticleForm.rechercheListArticleFamille(RechercheArticleForm.java:48)
    	at org.omega.servlets.AfficheArticles.doGet(AfficheArticles.java:46)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
    	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
    	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    	at java.lang.Thread.run(Thread.java:679)
    Caused by: java.sql.SQLException: An undefined column name was detected.
    	at com.ibm.as400.access.JDError.throwSQLException(JDError.java:408)
    	at com.ibm.as400.access.JDError.throwSQLException(JDError.java:380)
    	at com.ibm.as400.access.JDServerRow.findField(JDServerRow.java:482)
    	at com.ibm.as400.access.AS400JDBCResultSet.findColumn(AS400JDBCResultSet.java:557)
    	at com.ibm.as400.access.AS400JDBCResultSet.getString(AS400JDBCResultSet.java:3394)
    	at org.omega.dao.ArticleDaoImpl.map(ArticleDaoImpl.java:32)
    	at org.omega.dao.ArticleDaoImpl.chargementListArticlesFamille(ArticleDaoImpl.java:176)
    	... 20 more
    Pouvez vous me dire d'où cela proviens, je prècise que je n'ai jusqu'à mettre le RESULTSET en commentaire pour ne plus avoir d'erreur mais evidemment je n'ai rien en resultat de ma requete...

    Merci d'avance.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Septembre 2011
    Messages : 196
    Par défaut
    l'erreur doit sûrement venir au niveau du mapping du resultSet en article ! Vérifie que les noms de colonnes soient les bons, peux-tu nous montrer le code de ta fonction map() !

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 277
    Par défaut
    En effet tu as sans doute raison car :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while ( resultSet.next() ) {
    				//Voir probleme resultSet pour recherche Famille
    				//article = map( resultSet );
     
    			            System.out.printf("%-20s", //
    			                    resultSet.getString(1));
     
    				articlesFam.add(article);
    			}
    Me renvoie bien en console, le contenu de ma table.

    Voici le contenu de ma methode Map :

    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
    	private static Articles map( ResultSet resultSet ) throws SQLException {
    		Articles article = new Articles();
    		article.setNumArticle(resultSet.getString("A1ART"));//("A1ART")); // Affectation base => article
    		article.setLibelleArticle(resultSet.getString("A1LIB")); //( "A1LIB" ) ); // idem
    		article.setLibelleArticle1(resultSet.getString("A1LB1"));//idem
    		article.setLibelleArticle2(resultSet.getString("A1LB2"));//idem
    		article.setLibelleArticle3(resultSet.getString("A1LB3"));// idem
     
    		//voir probleme pour famille.
    		//article.setNumFamille(resultSet.getString(8));
     
     
    		System.out.println("article trouvé : "+article.getNumArticle());
    		System.out.println("article libellé : "+article.getLibelleArticle());
    		System.out.println("article complément 1 :"+article.getLibelleArticle1());
    		System.out.println("article complément 2 :"+article.getLibelleArticle2());
    		System.out.println("article complément 3 :"+article.getLibelleArticle3());
     
    		System.out.println("article famille : "+article.getNumFamille());
    		return article;
    	}

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Septembre 2011
    Messages : 196
    Par défaut
    ben maintenant vérifie que les noms de colonnes soient corrects pour tous les
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultSet.getString("")
    Au pire dé-commente ligne par ligne et tu verras laquelle te pose problème.

    ça peut également venir de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    article.setNumArticle(resultSet.getString("A1ART"));
    car à mon avis tu doit convertir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultSet.getString("A1ART")
    en Long où Integer pour qu'il soit bien affecté à ton numéro d'article !!

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 277
    Par défaut
    Est ce que ça ne peut pas venir du fait que j'utilise ma methode map pour resoudre 2 requetes SQL ? Car si je commente tout de cette maniere sauf un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    private static Articles map( ResultSet resultSet ) throws SQLException {
    		Articles article = new Articles();
    	//	article.setNumArticle(resultSet.getString("A1ART"));//("A1ART")); // Affectation base => article
    	//	article.setLibelleArticle(resultSet.getString("A1LIB")); //( "A1LIB" ) ); // idem
    	//	article.setLibelleArticle1(resultSet.getString("A1LB1"));//idem
    	//	article.setLibelleArticle2(resultSet.getString("A1LB2"));//idem
    	//	article.setLibelleArticle3(resultSet.getString("A1LB3"));// idem
     
    		//voir probleme pour famille.
    		article.setNumFamille(resultSet.getString(1));
    Cela passe j'ai bien le contenu de ma table qui est récupéré dans l'article.
    par contre si je décommente les autres en meme temps, j'ai l'erreur.
    En fait j'appel ma methode map(ResultSet resultSet) pour chacune de mes requêtes.
    Select A.CHAMP1, A.CHAMP2 From table WHERE ? ;
    donc j'ai ca dans deux prepareStatements. ( Selon que je recherche un article par code ou par libellé).

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 277
    Par défaut
    D'après toi, est ce que je peux utiliser ma methode Map(ResultSet) pour traiter plusieurs requête SQL. Et j'ai vérifier les correspondances, le truc c'est que j'ai commencé par des requêtes faisant intervenir celle que j'ai commentés plus haut, avant ma recherche par famille. Et celle-ci fonctionnaient, mais c'est dès que je rajoute le traitement pour rechercher par famille et charger mon menu déroulant...

    Je comprends pas ... :'(

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Septembre 2011
    Messages : 196
    Par défaut
    les colonnes que tu as dans tes (A1ART, A1LIB etc...) il me semble qu'il faut qu'elles soient dans ta requête SELECT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT A.A1FAM A.A1ART ... FROM PGVMARTM A
    ,

    Sinon essaye comme nom de colonne A.A1ART, A.A1LIB dans les , je dis ça à tout hasard !!

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

Discussions similaires

  1. Traitement erreur accès base de données
    Par informer dans le forum jQuery
    Réponses: 4
    Dernier message: 16/06/2014, 19h11
  2. Réponses: 2
    Dernier message: 31/05/2007, 16h36
  3. erreur acces base de donnée.
    Par Phiss dans le forum ASP
    Réponses: 8
    Dernier message: 08/11/2006, 10h49
  4. [Kylix] Kylix et accès Base de données
    Par Oyoboy dans le forum EDI
    Réponses: 16
    Dernier message: 22/06/2004, 16h41
  5. Modifier le nom d'une base de donnée avec erreur sy
    Par mmn dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/11/2003, 10h12

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