Bonjour,

Je crée une petite surcouche au connecteur JDBC mais je rencontre un gros souci.Avec l'utilisation de du setObjet apret vérification du type
Voir la méthode
Code : Sélectionner tout - Visualiser dans une fenêtre à part
public boolean addArg(int i,Object o){
dans la class ci-dessous

Voici ma class de surcouche
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
 
package oms.data.processing.cloud.usage;
 
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.sql.Types;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
 
import oms.conf.LoadConf;
import oms.conf.LoadConf.Bdds;
 
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.Statement;
 
public class ConnectPrincipale {
 
	private Connection con;
	private PreparedStatement preInstruction = null;
	public final DateFormat dateFormatMysql = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
 
 
	public ConnectPrincipale() {
 
			Bdds infoBdd = LoadConf.Bdds.getInfo("principale");
 
			System.out.println(infoBdd);
 
 
			try {
				this.con = (Connection) DriverManager.getConnection(infoBdd.urlConnection+infoBdd.bdd,infoBdd.user,infoBdd.password);
 
			} catch (SQLException ex) {
				System.err.println("==> SQLException: ");
					while (ex != null) {
							System.out.println("Message: " + ex.getMessage ());
							System.out.println("SQLState: " + ex.getSQLState ());
							System.out.println("ErrorCode: " + ex.getErrorCode ());
							ex = ex.getNextException();
							System.out.println("");
			}			
		}
	}
	public ArrayList<Object> execute(){
 
		ArrayList<Object> arss = new ArrayList<Object>();
 
		ResultSet rs;
		try {
			if(preInstruction != null){
				rs = this.preInstruction.executeQuery();
				for (int i = 0; i < rs.getMetaData().getColumnCount(); i++) {
					arss.add(rs.getArray(i));
				}
			}
		} catch (SQLException ex) {
			System.err.println("==> SQLException: ");
			while (ex != null) {
				System.out.println("Message: " + ex.getMessage ());
				System.out.println("SQLState: " + ex.getSQLState ());
				System.out.println("ErrorCode: " + ex.getErrorCode ());
				ex = ex.getNextException();
				System.out.println("");
			}
		}
 
		return arss;
	}
 
	public Boolean execute(String requete){
		Boolean valide=false;
 
		try {
 
			Statement instruction = (Statement) this.con.createStatement();
			if(instruction.execute(requete)){
				valide = true;
			}
 
		} catch (SQLException ex) {
				System.err.println("==> SQLException: ");
				while (ex != null) {
					System.out.println("Message: " + ex.getMessage ());
					System.out.println("SQLState: " + ex.getSQLState ());
					System.out.println("ErrorCode: " + ex.getErrorCode ());
					ex = ex.getNextException();
					System.out.println("");
				}
			}
		return valide;
	}
 
	public boolean preReq(String requete){
		boolean valide = false;
		try {
			PreparedStatement preInstruction = (PreparedStatement) this.con.prepareStatement(requete);
			valide = true;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
 
		return valide;
	}
 
	/**
         * Fonction permettant d'ajouter un argument sans se préocupé du type d'obj
         * @param i Pointeur a l'de l'argument
         * @param o Objet
         * @return boolean
         */
	public boolean addArg(int i,Object o){
		boolean valide = true;
 
		try {
 
			if(o instanceof String){
 
				this.preInstruction.setObject(i,o.toString(),Types.VARCHAR);
				System.out.println(i+" ^ "+o);
 
			}else if (o instanceof Date) {
 
				Date d = (Date) o;
				Timestamp time = new Timestamp(d.getTime());
				System.out.println(i+" ^ "+d+" <=> "+time);
				this.preInstruction.setObject(i,time,Types.TIMESTAMP);
 
			}else if (o instanceof Integer) {
 
				this.preInstruction.setInt(i, (Integer) o);
				System.out.println(i+" ^ "+o);
 
			}else{
				System.out.println("Rien na marché "+i+" ^ "+o);
			}
 
		} catch (SQLException ex) {
 
			System.err.println("==> SQLException: ");
			while (ex != null) {
				System.out.println("Message: " + ex.getMessage ());
				System.out.println("SQLState: " + ex.getSQLState ());
				System.out.println("ErrorCode: " + ex.getErrorCode ());
				ex = ex.getNextException();
				System.out.println("");
 
			}
		}
		return (Boolean) valide;
	}
 
	public boolean close(){
		Boolean valide=false;
 
		try{
			this.con.close();
		}catch (Exception e) {
			System.out.println("Problème de fermeture de la connection.");
		}
 
		return valide;
 
	}
}
Voici l'utilisation :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
		ConnectPrincipale theData = new ConnectPrincipale();
		theData.preReq("INSERT INTO SampleProgressDates(date,nombre_element_traiter,nombre_element_perdu) VALUES ( ? , ? , ?)");
		@SuppressWarnings("deprecation")
		Date d = new Date(1990, 8, 13, 20, 10, 11);
		theData.addArg(1,d);
		theData.addArg(2,22);
		theData.addArg(3,15);
		//theData.execute();
Voici l'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
Exception in thread "main" java.lang.NullPointerException
	at oms.data.processing.cloud.usage.ConnectPrincipale.addArg(ConnectPrincipale.java:129)
	at oms.data.processing.cloud.usage.SampleProgressDate.saveBdd(SampleProgressDate.java:29)
	at oms.exec.test.TestMysql.<init>(TestMysql.java:16)
	at oms.exec.run.main(run.java:77)
j'ai tester pas mal de cas de figure il se trouve que l'erreur arrive lors de l'utilisation de this.preInstruction.setObject();
Et me retourne l'erreur java.lang.NullPointerException.

J'avoue ne pas bien comprendre ce qui dérange :s es que le fait que la connection sois géré dans un objet appart et non dans l'objet courant peut poser problème ?