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

JDBC Java Discussion :

Comparaison entre une chaine et un champs


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut Comparaison entre une chaine et un champs
    Bonjour,

    Dans mon application, je récupère dans une variable une chaine de caractères. J'aimerai savoir si celle-ci peut être comparée à un nom de champs d'une table, en parcourant tous ses champs ?

    Si oui, comment ?

    Voilà ce que moi je fais :

    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
    public static void traitementSql() throws SQLException
    	{
    		try
    		{
    		    while (results.next())
    		    {
    //Récupération du champs
    		    	leChamps = parseDef.getRecupField().toLowerCase();
     
    		        resultatFinal = results.getString(leChamps);
    		        break;
    		    }
    		}
    		catch (SQLException e)
    		{
    		    System.err.println(e.getMessage());
    		}
    		finally
    		{
    		    results.close();
    		}
    	}
    Cependant il me dit pour chaque requête "Column 'xxx' not found."...
    J'ai bien vérifié les champs, les noms correspondent bien...J'effectue même un "tolower" en pensant que le problème venait de là, mais apparemment non...!

    Cordialement,
    Clément G.

  2. #2
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Par défaut
    Citation Envoyé par exqo77 Voir le message
    Bonjour,

    Dans mon application, je récupère dans une variable une chaine de caractères. J'aimerai savoir si celle-ci peut être comparée à un nom de champs d'une table, en parcourant tous ses champs ?

    Si oui, comment ?

    Cordialement,
    Clément G.
    Tu te connectes à la db, tu récupères le ResultSet..
    Tu récèpères le ResultSetMetaData de celui-ci.
    Tu parcours le RSMD, tu boucles tant qu'il y a des colonnes et tu compares au nom courant ?
    C'est bien ça que tu cherches ?

    Si tu veux un exemple de code, j'te donnerai

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut
    J'ai mis la méthode, si ça peut t'aider à comprendre et une explication dans mon premier post


    Pour ce qui est de ta solution, j'utilise bien un ResultSet (results) par contre un exemple de code ne serait pas de refus !

  4. #4
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Par défaut
    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
     
    String chaineAComparer ="CHAMPS1";
    // Execute the statement
    			cstmt.execute();
    			ResultSet rs = (ResultSet)cstmt.getObject(1);
    			ResultSetMetaData rsmd = rs.getMetaData();
     
     
    			// Columns name
    			for(int i=0;i<rsmd.getColumnCount();i++)
    			{
    				if(chaineAComparer.equalsIgnoreCase(rsmd.getColumnName(i))
    {
       // TRAITEMENT SI TU AS TROUVE
    }
    else
    {
       // TRAITEMENT SI TU N AS PAS TROUVE
    }
     
    			}
    Voilà par exemple

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut
    A quoi correspond le "cstmt" ?

  6. #6
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Par défaut
    Citation Envoyé par exqo77 Voir le message
    A quoi correspond le "cstmt" ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    OracleCallableStatement cstmt;
    			cstmt =(OracleCallableStatement) cn.prepareCall("{call SCHEMA.PROCEDURE (?,?)}");
    			//		Declare that the ? is a return value
    			cstmt.registerOutParameter (1, OracleTypes.CURSOR);
    			cstmt.registerOutParameter(2,OracleTypes.NUMBER);
    			// Execute the statement
    			cstmt.execute();
    dans le cas où tu appeles une procedure stockée.. sinon ..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    String sql="select ... from ... ";
    		PreparedStatement statement = cn.prepareStatement(sql);
    		// get the resultset
    		ResultSet resultat = statement.executeQuery();
    Pareil avec ceci où cn est ton OracleConnection ou autre...

    Voilà j'espère que c'est plus clair, je file vite !

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut
    Ok merci beaucoup !

    Citation Envoyé par libuma Voir le message
    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
     
    String chaineAComparer ="CHAMPS1";
    // Execute the statement
    			cstmt.execute();
    			ResultSet rs = (ResultSet)cstmt.getObject(1);
    			ResultSetMetaData rsmd = rs.getMetaData();
     
     
    			// Columns name
    			for(int i=0;i<rsmd.getColumnCount();i++)
    			{
    				if(chaineAComparer.equalsIgnoreCase(rsmd.getColumnName(i))
    {
       // TRAITEMENT SI TU AS TROUVE
    }
    else
    {
       // TRAITEMENT SI TU N AS PAS TROUVE
    }
     
    			}

    Et cet exemple là, dois-je l'éxecuter au niveau du second Try ?

  8. #8
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Et cet exemple là, dois-je l'éxecuter au niveau du second Try ?
    C'est a dire

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 20/01/2014, 22h57
  2. comparaison entre une partie de 2 chaine de caratere
    Par fabien335 dans le forum MATLAB
    Réponses: 3
    Dernier message: 28/02/2010, 09h43
  3. comparaison entre une variable et un champ de table
    Par lebarjot dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 19/02/2010, 12h38
  4. [VB6] comparaison d'une chaine ligne par ligne
    Par kubiczek dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 11/05/2006, 23h52
  5. Recherche d'une chaine dans un champ
    Par Cyberbob002 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 06/01/2006, 16h21

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