Probleme de connexion java

Résolu
papillonlibre22 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour, je developpe une application en java avec une base de donnes mysql mais des probleme quand j'essaie de me connecter,on m'affiche une erreur que je n'arrive pas a comprendre.
voici l'erreur et mon code:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '='gg' and password='cxvx'' at line 1
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at BaseDeDonnee.Login.btnlActionPerformed(Login.java:127)
at BaseDeDonnee.Login.access$000(Login.java:15)
at BaseDeDonnee.Login$1.actionPerformed(Login.java:59)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6525)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6290)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4881)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

mon code:

package BaseDeDonnee;

import Application.BDD;
import Application.Parameter;
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
*
  • @author ADAMA SAVADOGO
  • /

public class Login extends javax.swing.JFrame {

ResultSet r;
BDD db;
String username1, password1,hak;

public Login() {
db=new BDD(new Parameter().HOST_DB, new Parameter().USERNAME_DB, new Parameter()
.PASSWORD_DB, new Parameter().IPHOST, new Parameter().PORT);
initComponents();
}

/**
  • This method is called from within the constructor to initialize the form.
  • WARNING: Do NOT modify this code. The content of this method is always
  • regenerated by the Form Editor.
  • /

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
txtid = new javax.swing.JTextField();
txtpw = new javax.swing.JTextField();
btnl = new javax.swing.JButton();
btnf = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jLabel1.setFont(new java.awt.Font("Times New Roman", 1, 36)); // NOI18N
jLabel1.setText("Login");

jLabel2.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N
jLabel2.setText("Username:");

jLabel3.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N
jLabel3.setText("Password:");

btnl.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N
btnl.setText("Login");
btnl.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnlActionPerformed(evt);
}
});

btnf.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N
btnf.setText("Fermer");
btnf.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnfActionPerformed(evt);
}
});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(134, 134, 134)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGap(89, 89, 89)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2)
.addComponent(jLabel3))
.addGap(51, 51, 51)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(txtpw)
.addComponent(txtid, javax.swing.GroupLayout.PREFERRED_SIZE, 108, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(layout.createSequentialGroup()
.addGap(101, 101, 101)
.addComponent(btnl)
.addGap(47, 47, 47)
.addComponent(btnf)))
.addContainerGap(85, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(38, 38, 38)
.addComponent(jLabel1)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(txtid, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(37, 37, 37)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel3)
.addComponent(txtpw, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 59, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnl)
.addComponent(btnf))
.addGap(41, 41, 41))
);

pack();
}// </editor-fold>

private void btnfActionPerformed(java.awt.event.ActionEvent evt) {
dispose();
}

private void boutonloginActionPerformed(java.awt.event.ActionEvent evt) {
r=db.querySelectAll("utilisateur", "username='"+txtid.getText()
+ "' and password='" +txtpw.getText()+"'");
try{
while(r.next()){
username1=r.getString("username");
password1=r.getString("password");
hak=r.getString("type");
}
}catch(SQLException ex){
Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
}

if(username1 == null && password1 == null){
JOptionPane.showMessageDialog(this, "Nom utilsateur ou password incorrect");
} else {

if (hak.equals("directeur")) {//ouvre form pour directeur
Principale h=new Principale();
h.setVisible(true);
this.dispose();
} else {
Cachier k=new Cachier();//ouvre form pour cashier
k.setVisible(true);
this.dispose();
}
}

}

/**
  • @param args the command line arguments
  • /

public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>

/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Login().setVisible(true);
}
});
}

// Variables declaration - do not modify
private javax.swing.JButton btnf;
private javax.swing.JButton btnl;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JTextField txtid;
private javax.swing.JTextField txtpw;
// End of variables declaration
}
A voir également:

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

Il y a deux erreurs dans ce que tu as mis

1) une erreur très explicite :
"MySQLSyntaxErrorException: You have an error in your SQL syntax"

2) une erreur plus technique
NullPointerException at BaseDeDonnee.Login.btnlActionPerformed

Celle ci est probablement liée au fait que n'ayant pas réussi la requête (premier message) tu n'aurais pas du continuer le traitement car il utilise un résultat incohérent.

Je t'invite à logguer la requête que tu essayes d'exécuter pour voir pourquoi elle est fausse, et éventuellement rajouter un try/catch pour qu'une exception sur l'exécution de la requête empêche de traiter le résultat de la requête (résultat qui n'existe pas puisque la requête a planté)
0
papillonlibre22 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour j'ai essaye de corrige,voici maintenant la seule erreur qui s'affiche:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''sf' and password='fdd'' at line 1
merci pour votre aide!!!
0
aebischerle Messages postés 34 Date d'inscription   Statut Membre Dernière intervention   1
 
Hello,
comme KX te l'a déjà dis, c'est très explicite... ta requête SQL est fausse, elle comporte une erreur, je te conseille de la copier et de la tester directement sur ta base de données, puis dès qu'elle fonctionne comme tu le désire, de la remettre dans ton prog.

Si tu poste ta requête peut-être pourrons nous t'aider.
0
papillonlibre22 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   > aebischerle Messages postés 34 Date d'inscription   Statut Membre Dernière intervention  
 

bonjour, voici la requête

r=db.querySelectAll("utilisateur", "username='"+txtid.getText()
+ "' and password='" +txtpw.getText()+"'");
try{
while(r!=null && r.next()){
username1=r.getString("username");
password1=r.getString("password");
hak=r.getString("type");
}
}catch(SQLException ex){
Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
}

if(username1 == null && password1 == null)
{
JOptionPane.showMessageDialog(this, "Nom utilsateur ou password incorrect");
Jlabel.setText("errrrrrrrrrrrrrr");
Jlabel.setVisible(true);
} else {

if (hak.equals("directeur")) {//ouvre form pour directeur
Principale h=new Principale();
h.setVisible(true);
this.dispose();
} else {
Cachier k=new Cachier();//ouvre form pour cashier
k.setVisible(true);
this.dispose();
}
}

//fonction querySelectAll

public ResultSet querySelectAll(String nomTable, String etat){

connexionDatabase();
SQL = "SELECT * FROM " +nomTable+ "where" +etat;
return this.executionQuery(SQL);
}

Merci grandement!!!
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
"SELECT * FROM " +nomTable+ "where" +etat;

Il faudrait rajouter des espaces autour de where, là ça va faire :
SELECT * FROM utilisateurwhereusername=

Je t'invite aussi à regarder comment fonctionne les PreparedStatement et leur avantage contre les injections SQL
0