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

API standards et tierces Java Discussion :

[Introspection] Resultset Classe dynamique


Sujet :

API standards et tierces Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2002
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2002
    Messages : 52
    Par défaut [Introspection] Resultset Classe dynamique
    Bonjour,

    Je suis en train d'écrire une application web qui permet de réaliser des requêtes SQL sur les différents environnements bd de ma société.

    Mon souci est le suivant :

    Les users peuvent exécuter des requêtes et je dois leur afficher le résultat, cependant je ne veux pas remonter dans la couche web un objet de type resultset.
    Ce que je voudrais c'est pouvoir créer une classe dynamiquement en fonction des champs retournés dans le resultset.
    Est-ce que quelqu'un a une idée avec les classes d'introspection peut-être ?

    Merci d'avance.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 352
    Par défaut
    Regarde du côté des DynaBean associés aux BeanUtils des Apache Commons ça devrait répondre à ton besoin (si j'ai bien compris celui-ci) avec un peu de code autour.

    Jacques Desmazières

  3. #3
    Membre chevronné Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Par défaut
    J'ai une appli qui affiche le résultat d'une requete dans une jsp tout betement...
    si ca peut t'aider ....

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
      String requete = request.getParameter("requete");
      if (requete == null) {
        requete = "";
      }
      // Mots dangereux (interdiction de modifier le modele) 
      String requeteMaj = requete.toLowerCase();
      if (requeteMaj.indexOf("delete")!=-1
          || requeteMaj.indexOf("drop")!=-1
          || requeteMaj.indexOf("truncate")!=-1
          || requeteMaj.indexOf("update")!=-1
          || requeteMaj.indexOf("alter")!=-1
          || requeteMaj.indexOf("modify")!=-1)
      {
        out.println ("Requête refusée.");
        out.close ();
        return;
      }
        // Execution de la requete
        Connection cnx = null;
        ResultSet resultSet = null;
        PreparedStatement stmt = null;
        int indice;
        int numCols = -1;
    	try {
    		cnx =ConnectionBuilder.getConnection();
    		// Requete vers SGBD
    		stmt = cnx.prepareStatement(requete);
    		resultSet = stmt.executeQuery();
    		ResultSetMetaData a_meta = null;
    		a_meta = resultSet.getMetaData();
    		numCols = a_meta.getColumnCount();
    		// récupère les noms & labels des colonnes
    		out.println("      <table border=1><tr>");
    		for (int i=1; i<=numCols; i++) {
    			out.println("        <td class='td1'>&nbsp;<b>"+a_meta.getColumnName(i)+"</b></td>");
    		}
    		out.println("      </tr>");
    		// récupère les données des colonnes
    		while (resultSet.next()) {
    			out.println("      <tr>");
    		 	for (int i=1; i<=numCols; i++) {
    				int typeSQL = a_meta.getColumnType(i);
    				String result;
    				if (typeSQL==Types.CLOB && request.getParameter("voirCLOB")!=null && request.getParameter("voirCLOB").equals("ok")) {
    					Clob clob = resultSet.getClob(i);
    					result = clob.getSubString(1,(int)clob.length());
    				} else {
    					result = resultSet.getString(i);
    				}
    				out.println("        <td>"+result+"</td>");
    			}
    			out.println("      </tr>");
    		}
    		out.println ("</table>");
    	} catch (Exception e) {	  	
    		out.println (e.getMessage());
    	} finally {	  
    			try { if (resultSet!=null) resultSet.close();} catch(Exception exception) {;};
    		try { if (stmt!=null) stmt.close();} catch(Exception exception) {;};
     
    		ConnectionBuilder.closeConnection(cnx);

    Voila alors ca c'est la page qui récupére la requete et l'effectue ... je pense pas qu'il y ait des méthodes spécifiques à mon appli à part la gestion des connexions ....

    J'espere que ca t'aidera ...

Discussions similaires

  1. Introspection et class Enfants
    Par buggsbunny101 dans le forum Langage
    Réponses: 2
    Dernier message: 24/01/2007, 12h43
  2. Réponses: 4
    Dernier message: 18/01/2007, 05h46
  3. Réponses: 5
    Dernier message: 06/09/2006, 13h15
  4. Structure de classe dynamique
    Par amel666 dans le forum Langage
    Réponses: 2
    Dernier message: 24/01/2006, 09h13
  5. [C#] Invoquer une class dynamiquement
    Par nicoo dans le forum C#
    Réponses: 4
    Dernier message: 09/11/2005, 09h11

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