Utilisation de Preparedstatement à la place de Statement pour l'exécution des requêtes
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:
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;
}
} |