Bonjour à tous je vois partout que l'utilisation de PreparedStatement est préférable par rapport à celle de Statement. Mon soucis est le suivant j'utilisais une classe pour l’exécution de mes requettes et j'aimerais remplacer l'utilisation de Statement par PreparedStatement pour les requette de type SELECT car j'aimerais avoir le resultats de ce type de requette dans un tableau de String à 2 dimensions:
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 package connexion; import message.Message; import java.beans.Statement; import java.sql.*; public class ConectDB { static Connection con = null; static ResultSet resultats = null; private Message msg = new Message(); public ConectDB() { try { Class.forName("org.postgresql.Driver"); String url = "jdbc:postgresql://127.0.0.1:5432/BD"; String user = "nom-d'utilisateur"; String passwd = "mot_de_passe"; con = DriverManager.getConnection(url, user, passwd); } catch (Exception e) { new Message().dialog("Problème de connexion à la base de donnée vérifier le réseau "+e.getMessage()); } } //**********************Exécute les requêtes de MAJ ds la BD********************************** public void SQLupdate(String req) { try { java.sql.Statement stmt = con.createStatement(); ((java.sql.Statement) stmt).executeUpdate(req); // msg.dialog("requette executée avec succes"); } catch (SQLException e) { msg.error("Impossible d'executer la requete : \n" + e); } } public void SQLupdateNotResponse(String req) { try { Statement stmt = (Statement) con.createStatement(); ((java.sql.Statement) stmt).executeUpdate(req); msg.dialog("requette executée avec succes"); } catch (SQLException e) { msg.error("Impossible d'executer la requete: \n" + e.getMessage()); } } //************************************************************************ public boolean SQLupdateResponse(String req) { try { Statement stmt = (Statement) con.createStatement(); ((java.sql.Statement) stmt).executeUpdate(req); msg.dialog("requette executée avec succes"); return true; } catch (SQLException e) { msg.error("Impossible d'executer la requete: \n" + e.getMessage()); return false; } } //----------------Exécute les requêtes de lecture ds la BD------------ public void SQLquery(String sql) { //execution de la requête try { java.sql.Statement stmt = con.createStatement(); resultats = ((java.sql.Statement) stmt).executeQuery(sql); } catch (SQLException e) { msg.error("Impossible d'exécuter la requête" + e.getMessage()); //System.exit(0); } } //****************Retourne le nombre de ligne de la requête**************** public int numRows(String sql) { int nbre = 0; SQLquery(sql); try { //ResultSetMetaData rsmd = resultats.getMetaData(); //int nbCols = rsmd.getColumnCount(); boolean encore = resultats.next(); while (encore) { encore = resultats.next(); nbre++; } resultats.close(); } catch (SQLException e) { msg.error(e.getMessage()); } return nbre; } //*******************Retourne le nombre de colonne d'un requête********************************** public int numCols(String sql) { int nbre = 0; SQLquery(sql); try { ResultSetMetaData rsmd = resultats.getMetaData(); nbre = rsmd.getColumnCount(); resultats.close(); } catch (SQLException e) { msg.error(e.getMessage()); } return nbre; } //***************Retourne une matrice de données (résultat de la requête prise en paramètre) ********************* public String[][] DataQuery(String query) { int rows = numRows(query); int cols = numCols(query); String[][] donnees = new String[rows][cols]; SQLquery(query); try { ResultSetMetaData rsmd = resultats.getMetaData(); int nbCols = rsmd.getColumnCount(); boolean encore = resultats.next(); int numTuple = 0; while (encore) { for (int i = 0; i < nbCols; i++) { donnees[numTuple][i] = resultats.getString(i + 1); } encore = resultats.next(); numTuple++; } resultats.close(); } catch (SQLException e) { msg.error(e.getMessage()); } return donnees; } }
Partager