Bonjour,
Je suis en train de programmer un projet en Java (JEE). J'ai pour l'instant créer une servlet, censée envoyé à ma page JSP une collection d'objet (ArrayList).
Cependant j'ai un problème au niveau de ma connexion à la base de données, et plus particulièrement au moment de créer ma variable Statement me permettant de faire des requêtes.
J'obtiens une erreur de type NullPointerException. Je pense que c'est la connexion qui ne s'est pas faite mais après avoir vérifier que mes paramètres soient bon, je ne sais pas quoi faire.
Voici l'erreur :
java.lang.NullPointerException
controleur.EmprunterAlbum.doGet(EmprunterAlbum.java:72)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
Voici ma classe :
package controleur;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.JOptionPane;
import musique.Album;
import utilitaire.Sql;
public class EmprunterAlbum extends HttpServlet{
public void doGet (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
JOptionPane joptDialogue = new javax.swing.JOptionPane();
//String pilote = "com.mysql.jdbc.Driver";
String pilote = "org.gjt.mm.mysql.Driver";
String protocoleDeConnexion= "jdbc:mysql:"; // début url
String url = "//localhost:3306/megatheque"; // fin url
// Paramètres propres au SGBD
String utilisateurBD = "root";
String motDePasseBD = "";
String schemaBD = ""; // Pour Oracle, il faut préfixer le nom de la table par le nom du schéma
// Variables contenant des objets de JDBC
Connection connexion = null; // L'identifiant de connexion
ResultSet resultat = null; // La liste des enregistrements
Statement stmt = null; // l'instruction SQL
String texteRequete = "";
try{
// PREMIERE ETAPE : chargement du pilote JDBC
Class.forName(pilote) ; //jdbc driver
// DEUXIEME ETAPE : connexion au SGBD : on fournit login et mot de passe (pas pris en compte avec notre base Access)
connexion = DriverManager.getConnection(protocoleDeConnexion + url, utilisateurBD, motDePasseBD); //url = base
}
catch (ClassNotFoundException e) {
e . printStackTrace() ;
} catch (SQLException e) {
e . printStackTrace() ;
}
int id;
String nom;
String genre;
String pochette;
int annee;
boolean disponible;
try{
texteRequete= "SELECT * FROM album;";
stmt = connexion.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
//stmt = connexion.createStatement();
if(stmt == null){
joptDialogue.showMessageDialog(joptDialogue, "kfhjsdhf");
}
System.out.println(texteRequete);
resultat = stmt.executeQuery(texteRequete);
} catch (SQLException e) {
e . printStackTrace() ;
}
ArrayList<Album> lesAlbums = new ArrayList<Album>();
try { //Ajout des résultats dans la collection
while (resultat.next()) {
id = Integer.parseInt(resultat.getString("IDDISQUE"));
nom = resultat.getString("NOM");
genre = resultat.getString("GENRE");
pochette = resultat.getString("POCHETTE");
annee = Integer.parseInt(resultat.getString("ANNEE"));
if(resultat.getString("DISPONIBLE") == "oui"){
disponible = true;
}
else{
disponible = false;
}
lesAlbums.add(new Album(id, nom, genre, pochette, annee, disponible));
}
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
request.setAttribute("lesAlbums", lesAlbums);
//request.setAttribute("colorString", new ColorModel().getColor());
request.getRequestDispatcher("choisirAlbum.jsp").forward(request, response);
}
}
Avez vous des solutions?
Afficher la suite