Bonjour,

Je travaille actuellement sur un projet pour finaliser une formation. Le truc c'est que je dois réaliser une application en entreprise, mais malheureusement je n'ai aucun tuteur et personne pour m'aider donc pas évident quand on coince sur quelques choses!!!

Un des points qui m'embête en ce moment, c'est que j'ai fait une requête dans ma BDD et les infos qui me sont retournées je les insères dans un hastable.

Le souci c'est que vu que mes champs ne sont pas obligatoires, lorsque qu'un d'eux est retourné vide, il me renvoi une erreur: NullPointerException.

Mais comment faire pour que même si un champs est vide le programme continu.

Dois-je faire des if et des else ou y a t-il autre chose à faire ?

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
 
public Hashtable requeteDetailMateriel() throws SQLException, ClassNotFoundException {
	String queryAffDetailMateriel;			//Déclaration de la requête
 
	Hashtable tabDetail = new Hashtable();
 
	try {
		//Création de la requête
		queryAffDetailMateriel  = "SELECT type_interne_materiel, origine_materiel,serie_materiel, date_fabrication_materiel,statut_materiel,date_achat_materiel, nom_marque, statut_mouvement";
		queryAffDetailMateriel += " FROM materiel mat";
		queryAffDetailMateriel += " INNER JOIN marque mar";
		queryAffDetailMateriel += " ON mat.num_marque = mar.num_marque";
		queryAffDetailMateriel += " LEFT JOIN mouvement mou";
		queryAffDetailMateriel += " ON mat.num_parc = mou.num_parc";
		queryAffDetailMateriel += " WHERE mat.num_parc = "+idMateriel;
		queryAffDetailMateriel += " AND date_debut_mouvement = ";
		queryAffDetailMateriel += " (SELECT date_debut_mouvement FROM mouvement WHERE num_parc = "+idMateriel+" AND rownum <= 1)";
		queryAffDetailMateriel += " ORDER BY mat.num_parc";
 
 
		Class.forName("oracle.jdbc.driver.OracleDriver");
		sqlc = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:XE", "gregory", "greg");		     
 
		//Préparation de la requête avec les données renvoyées par le formulaire d'authentification
		Statement stm = sqlc.createStatement();
 
 
		//Execution de la requête
		ResultSet resAffDetailMateriel = stm.executeQuery(queryAffDetailMateriel);
 
		while(resAffDetailMateriel.next()) {
			// Récupération des résultats
			tabDetail.put("statut_mouvement",this.statut_mouvement);
			tabDetail.put("type_interne", this.type_interne);
			tabDetail.put("origine", this.origine);
			tabDetail.put("nom_marque",this.nom_marque);
			tabDetail.put("num_serie",this.num_serie);				
			tabDetail.put("fabrication",this.fabrication);
			tabDetail.put("statut_materiel",this.statut_materiel);
			tabDetail.put("date_achat",this.date_achat);
		}
 
		//Fermeture du ResultSet
		resAffDetailMateriel.close();
		//Fermeture du Statement
		stm.close();
 
	} catch (SQLException e) {
		e.printStackTrace();
	}
	return tabDetail;
}
Par avance merci