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 :

J'ai du mal avec java.sql.ResultSet


Sujet :

JDBC Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 125
    Points : 23
    Points
    23
    Par défaut J'ai du mal avec java.sql.ResultSet
    salut,

    j'essaye de faire un petit système d'authentification et donc j'aimerai que ma classe public boolean isUserExist(String user_name); renvoie true ou false si user_name entré par l'utilisateur est bien dans la base de données seulement je galère avec ResultSet.

    avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                ResultSet rs = stmt.executeQuery("SELECT name FROM users");
     
                while(rs.next())
                {
                    dbname = rs.getString("name");
                    System.out.print(dbname);
                }
    j'ai bien les utilisateurs de ma base de données qui sont dans ma String dbname mais je ne trouve pas la bonne méthode pour sortir les noms un par un et les comparer à user_name.
    j'ai essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int r = rs.getRow(); 
    for(int x=0;x<r;x++) 
    String dbname = rs.absolute(x); 
    if(dbname == user_name) return true;
    ou des trucs dans le genre avec while(rs.next()); mais j'arrive pas à grand chose donc je dois mal m'y prendre.
    j'ai aussi essayé avec une requête genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    executeQuery("SELECT '"+user_name+"' FROM users"
    qui n'est d'ailleurs pas conseillé pour éviter les injection sql d'après ce que j'ai compris mais je n'ai pas réussi à ce que je voulais non plus d'façon.

    comment faire ?
    merci

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 80
    Points : 119
    Points
    119
    Par défaut
    Bonjour,

    Pour la solution avec le ResultSet, vous n'avez plus qu'à comparer le résultat par rapport au paramètre de votre méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public boolean isUserExist(String user_name){
    	ResultSet rs = stmt.executeQuery("SELECT name FROM users");
    	boolean isExiste = false;
    	while(rs.next())
    	{
    		dbname = rs.getString("name");
    		System.out.print(dbname);
    		if(dbname.equals(user_name)){
    				isExiste = true;
    		}
    	}
    	return isExiste
    }
    Je pense que le plus simple est que vous effectuez votre contrôle de la présence de l'utilisateur directement à l'aide d'une requête SQL.
    Pour éviter toute injection SQL, utilisez l'objet "PreparedStatement".
    De la documentation : https://java.developpez.com/faq/jdbc...paredStatement

    Pour votre cas :
    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
    public boolean isUserExist(String user_name){
     
    	boolean isExiste = false;
    	Connection connection = ...; 
    	//préparation de la requête 
    	PreparedStatement ps = connection.prepareStatement("SELECT * FROM user WHERE nom = ?"); 
    	// On assigne la valeur au paramètre
    	ps.setString(1, user_name);
    	// on execute la requete et stock le résultat dans un ResultSet
    	ResultSet rs = ps.execute();
    	// Si un résultat, alors le nom existe dans la table
    	if(rs.next()){
    	   isExiste = true;
    	}
    	// On ferme les ressources
    	ps.close();
    	rs.close();
    	connection.close();
     
    	return isExiste;
    }
    Bonne journée

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 125
    Points : 23
    Points
    23
    Par défaut
    trop bien, merci.

    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
     
        public boolean isUserExist(String user_name)
        {
            boolean userExist = false;
     
            try 
            {
                Class.forName("org.postgresql.Driver");
                Connection c = DriverManager.getConnection("jdbc:postgresql://localhost:5432/deepfighters",
                "user", "pass");
                c.setAutoCommit(false);
                PreparedStatement prep1 = c.prepareStatement("SELECT * FROM users WHERE name = ?");
                prep1.setString(1,user_name);
     
                ResultSet rs = prep1.executeQuery();
                if(rs.next())
                {
                    userExist = true;
                }
     
                rs.close();
                prep1.close();
                c.close();
            }
            catch (Exception e) 
            {
                e.printStackTrace();
                System.err.println(e.getClass().getName()+": "+e.getMessage());
                System.exit(0);
            }
            return userExist;
        }
    bonne journée à vous aussi ou bonne nuit. ^^;

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

Discussions similaires

  1. Problème avec java.sql.date
    Par joel74 dans le forum Langage
    Réponses: 2
    Dernier message: 22/02/2013, 13h08
  2. probleme avec java.sql
    Par popeye1996 dans le forum Documents
    Réponses: 2
    Dernier message: 20/05/2009, 09h22
  3. Date et heure système avec java.sql
    Par reverse_engineer dans le forum Langage
    Réponses: 3
    Dernier message: 17/07/2008, 10h00
  4. problème avec java.sql.Date sous WinXp BEA Apache
    Par astaroth_vertigo dans le forum Hibernate
    Réponses: 5
    Dernier message: 06/09/2007, 09h20
  5. java.lang.InstantiationException : java.sql.ResultSet
    Par Bizoo dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 28/05/2007, 13h23

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