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 :

Java et simple BDD pour vérifier login & passwd


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Java et simple BDD pour vérifier login & passwd
    Bonjour,


    Voilà j'aimerai passer par une BDD (mySQL ?) lorsque je veux vérifier le mot de passe et le login d'un utilisateur. Pour l'instant le programme ouvre et parcour simplement un fichier texte. Je voudrais donc que le programme ouvre la BDD et la parcours en recherchant si le login existe, si c'est le cas, le password donné par l'utilisateur correspond il à celui de la BDD.

    Connaitriez-vous une méthode déjà toute faite qui remplisse cette fonction?

    Merci d'avance et bonne journée.

  2. #2
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Oulala, je crois que tu en demandes un peu trop.

    Comment veux tu qu'une méthode connaisse ta base, ton login, tes tables et enfin les champs qu'elle doit chercher.

    Donc pour répondre a ta question, non, il n'existe pas ce que tu cherches. Il va falloir faire "à la main". Mais bon ce n'est pas la mort non plus. Il suffit d'installer une BDD, mysql, rapide et simple d'utilisation et suffit amplement pour faire de petit test.

    Ensuite crée ta table, la remplir. Et ensuite dans ton code de crée la connection, et faire une requete sur la base pour te recupérer le password du login entré et regarder s'il coïncide. Si rien ne t'es retourné c'est que le login n'existe pas.

    Si tu as d'autre questions n'ésite pas.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Même une fonction avec comme paramètre le password et le login ?

    Le problème c'est que je ne m'y connais pas du tout en BDD et je ne connais pas non plus les "connecteurs" (je sais même pas si c'est comme ça qu'on appelle ça) java-BDD... et à mon plus grand désespoir c'est assez urgent..


    Enfin bon merci quand même

  4. #4
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    A ton grand desespoir je ne connais rien que fasse ceci.
    Mais si ne t'inquiete pas, tu n'as pas besoin de savoir grand chose en BDD pour faire ceci.

    L'installation de mysql est très simple, next, next, next. Avec juste le password root a donner et le nom de ta database.

    Et puis la connection à la base, c'est simplement 2 ou 3 lignes.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ouais mais j'ai oublié de dire qu'à part le fait que je dois vérifier dans la base si le pass et le login existe, il faut aussi que je puisse rajouter un pass et un login via une fonction dans cette BDD.

    Si c'est pas trop dur, tu connais un tutoriel qui va droit au but à ce niveau ?

    Merci encore.

  6. #6
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    Citation Envoyé par nicofromChina
    il faut aussi que je puisse rajouter un pass et un login via une fonction dans cette BDD.

    Si c'est pas trop dur, tu connais un tutoriel qui va droit au but à ce niveau ?
    Le tuto, je l'ai copié collé en dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO tableMotDePasse(login,passwd) VALUES ('Moi','PASS')
    Mais bon ce tuto est un peu simple. Je crois qu'avec MySQL tu disposes d'une fonction PASSWORD qui crypte le mot de passe. Ce qui est un poil mieux quand meme ...

  7. #7
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    Pour charger le driver et ouvrir une connexion, la FAQ devrait t'aider ... enfin c'est sûr

    Pour mettre "ton jar dans ton CLASSPATH" il suffit d'ajouter le chemin vers le .jar.

    Sous bash par exemple
    export CLASSPATH=cheminVerslesClasses:cheminVersDesJar:chemiPourDriver/mondriver.jar:.

    Sous windows ça sera des ; (à moins que j'inverse les deux )

    Bref, de la même manière que ton classpath contient le(s) chemin(s) vers tes .class, il faut aussi que tu lui mettes le(s) chemin(s) vers les librairies externes que ton application utilise. Dont le driver ...

  8. #8
    Invité
    Invité(e)
    Par défaut
    Heu attend là en fait je viens d'avoir un doute, le mysql-connector-java-5.0.4-bin.jar je dois le mettre dans le classpath d'Eclipse et pas de windows. Si c'est bien le cas, je dois choisi, Project, Properties, puis l'onglet Librairies et là Add External JARs non ?
    A force de lire des trucs que je ne comprenais pas j'ai fini par même oublier ce que je savais.

    Bon enfin bref j'ai supposé que c'était dans le classpath d'Eclipse et j'ai donc ajouter le .jar à mon projet.

    Mon projet est juste la classe suivante :
    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
    package test;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.Statement;
     
    public class JDBC {
     
    	public static void main(String[] args) throws Exception {
    		Class.forName("com.mysql.jdbc.Driver");
    		Connection cnx = DriverManager.getConnection("jdbc:mysql://127.0.0.1", "chat", "passwd");
    		Statement s = cnx.createStatement();
    		s.execute("select 1 from users");
    		s.close();
    		cnx.close();
    	}
    }
    Je le lance et j'obtient cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Exception in thread "main" java.sql.SQLException: No suitable driver
    	at java.sql.DriverManager.getConnection(Unknown Source)
    	at java.sql.DriverManager.getConnection(Unknown Source)
    	at test.JDBC.main(JDBC.java:11)
    J'en déduis donc que c'est au niveau du "com.mysql.jdbc.Driver" mais justement dans la doc de MySql c'est celui là qu'il donne.

    Ai-je fait une erreur ?
    Dernière modification par Invité ; 22/01/2007 à 17h02.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bon j'ai un peu avancé et surtout j'ai compris ce que je faisais (enfin ).

    Par contre là j'ai un problème que je ne pige pas et même en faisant le debug je ne vois pas (d'ailleur au passage, en mode debug, où trouve-t-on les valeurs pour un ResultSet.getString(1) ?)

    Voici mon code:
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    package test;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.Statement;
    import java.sql.SQLException;
    import java.sql.ResultSet;
     
    public class DataBase {
     
    	private Connection connection;
    	private Statement statement;
    	private ResultSet resultSet;
    	private String login = null;
    	private String password = null;
    	private String[] usersList = null;
    	private int numberOfUsers = 0;
    	private String[] chatRoomsList = null;
    	private String chatRoom = null;
    	private String query = null;
    	private String tableName = "users";
     
    	public DataBase(String driver, String url, String dataBaseUserName, String dataBaseUserPassword) {
    		try {
    		    Class.forName(driver);
    		    connection = DriverManager.getConnection(url, dataBaseUserName, dataBaseUserPassword);
    			statement = connection.createStatement();
    		}catch(ClassNotFoundException e) {
    		    System.out.println("Error when loading the driver : " + e.toString());
    		}catch(SQLException e) {}
    	}
     
    	public void createTable(String tableName) {
    		//vérifier ici si la table existe
    		this.tableName = tableName;
    		query = "CREATE TABLE " + tableName +
    							"(login VARCHAR(30) not null, " +
    							"password VARCHAR(30) not null, " +
    							"PRIMARY KEY (login))";
    		try {
    			statement.executeUpdate(query);
    		}catch(SQLException e) {}
    	}
     
    	public void useTable(String tableName) {
    		this.tableName = tableName;
    	}
     
    	public void addUser(String login, String password) {
    		query = "INSERT INTO " + tableName + " VALUES ('" + login + "', '" + password + "')";
    		try {
    			statement.executeUpdate(query);
    		}catch(SQLException e) {}
    	}
     
    	public void deleteUser(String login) {
    		query = "DELETE FROM " + tableName + " WHERE login='" + login + "'";
    		try {
    			statement.executeUpdate(query);
    		}catch(SQLException e) {}
    	}
     
    	public String[] getUsersList() {
    		int i = 0;
    		query = "SELECT login FROM " + tableName;
    		try {
    			resultSet = statement.executeQuery(query);
    			while(resultSet.next()) {
    				usersList[i] = resultSet.getString(1);
    				i++;
    			}
    		}catch(SQLException e) {}
    		numberOfUsers = i;
    		return usersList;
    	}
     
    	/*public boolean isRegistered(String login) {
    		try {
    			statement.executeQuery(query);
    		}catch(SQLException e) {}
    	}
     
    	public boolean isAuthentificationOk(String login, String password) {
    		try {
    			statement.executeUpdate(query);
    		}catch(SQLException e) {}
    	}*/
     
    	public String getLogin() {
    		return login;
    	}
     
    	public String getPassword() {
    		return password;
    	}
     
    	public int getNumberOfUsers() {
    		return numberOfUsers;
    	}
     
    	public void addChatRoom(String chatRoom) {
    		query = "INSERT INTO " + tableName + " VALUES ('" + chatRoom + "')";
    		try {
    			statement.executeUpdate(query);
    		}catch(SQLException e) {}
    	}
     
    	public void deleteChatRoom(String chatRoom) {
    		query = "DELETE FROM " + tableName + " WHERE chatRoom='" + chatRoom + "'";
    		try {
    			statement.executeUpdate(query);
    		}catch(SQLException e) {}
    	}
     
    	/*public String[] getChatRoomList() {
     
    	}
     
    	public boolean isExisting(String chatRoom) {
    		try {
    			statement.executeUpdate(query);
    		}catch(SQLException e) {}
    	}*/
     
    	public String getChatRoom() {
    		return chatRoom;
    	}
     
    	public void closeStatement() {
    		try {
    			statement.close();
    		}catch(SQLException e) {}
    	}
     
    	public void closeConnection() {
    		try {
    			connection.close();
    		}catch(SQLException e) {}
    	}
     
     
    	public static void main(String[] args) throws Exception {
    		DataBase dataBase = new DataBase("com.mysql.jdbc.Driver", "jdbc:mysql://localhost/chat", "chat", "azerty");
    		dataBase.useTable("users");
    		String users[] = dataBase.getUsersList();
    		for(int i = 0; i < dataBase.getNumberOfUsers(); i++) {
    			System.out.println(users[i]);
    		}
    		dataBase.closeStatement();
    		dataBase.closeConnection();
    	}
    }
    Et l'erreur que j'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Exception in thread "main" java.lang.NullPointerException
    	at test.DataBase.getUsersList(DataBase.java:69)
    	at test.DataBase.main(DataBase.java:145)
    Je précise qu'en faisant un "select login from users" en ligne de commande sur mon SGBD j'ai bien mes 3 rows qui sortent. Mon code me paraît correct et je ne vois vraiment pas d'où vient le problème surtout que j'ai suivi ce qu'à fait un gars dans un tutoriel à part que j'ai choisi un tableau de Strings (ça me paraît bizarre que l'erreur vienne de là).

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bon je viens de voir que le problème venait du tableau de Strings mais je ne comprends pas pourquoi. Si quelqu'un peut me l'expliquer c'est cool

    Sinon dans ce cas comment je peux récupérer toute la colonne d'une table ?!

  11. #11
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Essaye voir un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultSet.getString(0);
    Je crois que ca commence à zero. Mais moi j'utilise souvent, resultSet.getString("login") par exemple, en faite le nom du champ que tu veux recuperer, ca te permet de ne pas t'occuper de la position de tes champs, et surtout de pouvoir faire un select * sans probleme.

    Si ce n'est pas ca le probleme fis le savoir je chercherais plus en détails mais il n'y a que ca qui me saute aux yeux.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 24/03/2013, 15h08
  2. [DTD] utiliser avec JAVA des fichiers DTD pour vérifier la validité des fichiers XML
    Par Balbuzard dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 20/04/2009, 12h10
  3. script pour vérifier si un champ existe déjà dans une BDD
    Par tomguiss dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/02/2009, 13h19
  4. Cherche BDD simple, légère pour toute petite application
    Par sp2308 dans le forum Bases de données
    Réponses: 22
    Dernier message: 30/01/2009, 13h49
  5. [LDAP] Requête pour vérifier le login et mot de passe
    Par NiGHtyWolf dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 10/03/2007, 22h44

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