Exception java

Fermé
faniko - 3 mai 2008 à 09:30
 ray_fab - 3 mai 2008 à 12:25
Bonjour,
je code en netbeans pour se connecter a une base de données sqlserver et faire des requetes mais il m'affiche l'erreure suivante
java.lang.NullPointerException
at weapplication1.Administrateur.authentifier(Administrateur.java:42)
at weapplication1.Administrateur.main(Administrateur.java:54)
BUILD SUCCESSFUL (total time: 1 second)

(rq: les lignes précédés par --> sont les lignes érronés)
voici mon code
*
* Administrateur.java
*
* Created on 2 mai 2008, 22:13
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/

package weapplication1;

/**
*
* @author Administrateur
*/
import java.sql.*;
import java.io.*;
import java.util.*;

public class Administrateur {
public Connection c;
public Statement stmt;
public ResultSet rs,rs1;
public String query ;
String login;
String mpd;
public Administrateur(String login,String mpd)
{this.login=login;
this.mpd=mpd;
}
/** Creates a new instance of Administrateur */
public Administrateur()throws ClassNotFoundException, SQLException {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Connection con = DriverManager.getConnection("jdbc:odbc:Super");
}
public void authentifier(String login,String mot_de_passe) throws ClassNotFoundException,SQLException
{
query= "SELECT * from administrateur where login='"+login+"' and mpd='"+mot_de_passe+"'";

--> rs=stmt.executeQuery(query);
if(rs.next()){
System.out.println(rs.getString(1) + rs.getString(2));


}

}
public static void main(String args[])
{
try
{Administrateur a=new Administrateur();
--> a.authentifier("admin","admin");
}
catch(SQLException sqle){System.err.println(sqle.getStackTrace());}
catch(ClassNotFoundException cnfe){System.err.println("Probleme authentification");}
catch(Exception e){e.printStackTrace();}

}
A voir également:

1 réponse

Bonjour, ton probleme vient de l'initialisation de ton stmt, sa valeur n'a pas été initialisée donc il est considéré comme nul...il faut lui attribuer une valeur initiale.
Alors je te propose cette solution :
package weapplication1; 

/** 
* 
* @author Administrateur 
*/ 
import java.sql.*; 
import java.io.*; 
import java.util.*; 

public class Administrateur { 
          private Connection con=null; 
          private Statement stmt=null; 
          private ResultSet rs=null; 
          private String query ; 
          private String login; 
          private String mot_de_passe; 
           /** Creates a new instance of Administrateur */ 
          public Administrateur(String login,String mot_de_passe){
                   this.login=login; 
                   this.mot_de_passe=mot_de_passe; 
          } 
          /**Constructeur par defaut*/
          public Administrateur()throws ClassNotFoundException, SQLException { 
                   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
            } 
            public void authentifier(String login,String mot_de_passe) throws ClassNotFoundException,SQLException{ 
                     c = DriverManager.getConnection(jdbc:odbc:Super, login, mot_de_passe);
                     stmt = connection.createStatement();
                     query= "SELECT * from administrateur where login='"+login+"' and mpd='"+mot_de_passe+"'"; 
                     rs=stmt.executeQuery(query); 
                     while(rs.next()){ 
                             System.out.println(rs.getString(1) + rs.getString(2)); 
                     }
            } 


Je pense que celui la doit marcher normalement!
Juste une petite remarque j'ai juste essayer de modifier ton code mais il existe beaucoup de points pas trop claires je dirai trop de code mort dans ton programme et cela le rend pas trop claires...essaies de le rendre plus lisible.
allez Bon courage!
0