360 lines
7.0 KiB
Java
360 lines
7.0 KiB
Java
|
package com.articles;
|
|||
|
|
|||
|
import java.sql.*;
|
|||
|
import java.util.Vector;
|
|||
|
|
|||
|
enum OperationBDD
|
|||
|
{
|
|||
|
OP_BDD_SELECTION,
|
|||
|
OP_BDD_CREER_TABLE,
|
|||
|
OP_BDD_SUPPR_TABLE
|
|||
|
}
|
|||
|
|
|||
|
public class GestionConnexion
|
|||
|
{
|
|||
|
|
|||
|
private ParametresConnexion paramsConn;
|
|||
|
|
|||
|
private Connection connection = null;
|
|||
|
private Statement statement = null;
|
|||
|
|
|||
|
private String requeteSQL = "";
|
|||
|
private ResultSet resultSet = null;
|
|||
|
|
|||
|
private Vector<String> vs_erreurs = null;
|
|||
|
private Vector<String> vs_anomalies = null;
|
|||
|
|
|||
|
|
|||
|
public GestionConnexion()
|
|||
|
throws ClassNotFoundException, Exception
|
|||
|
{
|
|||
|
|
|||
|
this.statement = null;
|
|||
|
this.resultSet = null;
|
|||
|
this.requeteSQL = "";
|
|||
|
|
|||
|
this.paramsConn = new ParametresConnexion();
|
|||
|
|
|||
|
this.vs_erreurs = new Vector<String>();
|
|||
|
this.vs_anomalies = new Vector<String>();
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
Class.forName(ParametresConnexion.CLASSE).newInstance();
|
|||
|
}
|
|||
|
catch (ClassNotFoundException ex)
|
|||
|
{
|
|||
|
throw ex;
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
throw ex;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public void ouvrir(ParametresConnexion params)
|
|||
|
{
|
|||
|
if (params == null)
|
|||
|
throw new NullPointerException();
|
|||
|
|
|||
|
this.paramsConn.CopierDepuis(params);
|
|||
|
|
|||
|
this.ouvrir();
|
|||
|
}
|
|||
|
|
|||
|
public void ouvrir()
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
this.fermerConnexion();
|
|||
|
|
|||
|
this.connection = DriverManager.getConnection(this.paramsConn.getUrl(),
|
|||
|
this.paramsConn.Utilisateur, this.paramsConn.Pwd);
|
|||
|
|
|||
|
this.traiterWarning(this.connection.getWarnings());
|
|||
|
}
|
|||
|
catch (SQLException ex)
|
|||
|
{
|
|||
|
this.traiterSQLException(ex);
|
|||
|
|
|||
|
this.fermerConnexion();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public boolean estOuverte()
|
|||
|
{
|
|||
|
boolean bOuverte = false;
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
if (this.connection != null)
|
|||
|
bOuverte = !this.connection.isClosed();
|
|||
|
}
|
|||
|
catch (SQLException ex)
|
|||
|
{
|
|||
|
this.traiterSQLException(ex);
|
|||
|
}
|
|||
|
|
|||
|
return bOuverte;
|
|||
|
}
|
|||
|
|
|||
|
public void fermerRessourcesRequete()
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
if (this.resultSet != null)
|
|||
|
{
|
|||
|
this.resultSet.close();
|
|||
|
this.resultSet = null;
|
|||
|
}
|
|||
|
|
|||
|
if (this.statement != null)
|
|||
|
{
|
|||
|
this.statement.close();
|
|||
|
this.statement = null;
|
|||
|
}
|
|||
|
|
|||
|
this.requeteSQL = "";
|
|||
|
}
|
|||
|
catch (SQLException ex)
|
|||
|
{
|
|||
|
this.traiterSQLException(ex);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void fermerConnexion()
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
this.fermerRessourcesRequete();
|
|||
|
|
|||
|
if (this.connection != null)
|
|||
|
{
|
|||
|
this.connection.close();
|
|||
|
this.connection = null;
|
|||
|
}
|
|||
|
}
|
|||
|
catch (SQLException ex)
|
|||
|
{
|
|||
|
this.traiterSQLException(ex);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public boolean lancerRequeteSelection(String query)
|
|||
|
{
|
|||
|
boolean res = true;
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
if (this.connection != null)
|
|||
|
{
|
|||
|
this.fermerRessourcesRequete();
|
|||
|
|
|||
|
this.statement = this.connection.createStatement();
|
|||
|
this.traiterWarning(this.statement.getWarnings());
|
|||
|
|
|||
|
this.resultSet = this.statement.executeQuery(query);
|
|||
|
this.traiterWarning(this.resultSet.getWarnings());
|
|||
|
|
|||
|
this.requeteSQL = query;
|
|||
|
}
|
|||
|
}
|
|||
|
catch (SQLException ex)
|
|||
|
{
|
|||
|
this.traiterSQLException(ex);
|
|||
|
|
|||
|
this.fermerRessourcesRequete();
|
|||
|
|
|||
|
res = false;
|
|||
|
}
|
|||
|
|
|||
|
return res;
|
|||
|
}
|
|||
|
|
|||
|
public int lancerRequeteModifBDD(String query)
|
|||
|
{
|
|||
|
int res = 0;
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
if (this.connection != null)
|
|||
|
{
|
|||
|
this.fermerRessourcesRequete();
|
|||
|
|
|||
|
this.statement = this.connection.createStatement();
|
|||
|
|
|||
|
res = this.statement.executeUpdate(query);
|
|||
|
this.traiterWarning(this.statement.getWarnings());
|
|||
|
|
|||
|
this.requeteSQL = query;
|
|||
|
}
|
|||
|
}
|
|||
|
catch (SQLException ex)
|
|||
|
{
|
|||
|
this.traiterSQLException(ex);
|
|||
|
|
|||
|
this.fermerRessourcesRequete();
|
|||
|
|
|||
|
res = -1;
|
|||
|
}
|
|||
|
|
|||
|
return res;
|
|||
|
}
|
|||
|
|
|||
|
public ParametresConnexion getParametresConnexion()
|
|||
|
{
|
|||
|
return new ParametresConnexion(this.paramsConn);
|
|||
|
}
|
|||
|
|
|||
|
public String getRequeteSQL()
|
|||
|
{
|
|||
|
return this.requeteSQL;
|
|||
|
}
|
|||
|
|
|||
|
public Vector<String> getInfosConnexion()
|
|||
|
{
|
|||
|
Vector<String> vs_infosConn = new Vector<String>();
|
|||
|
DatabaseMetaData dmd;
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
if (this.estOuverte())
|
|||
|
{
|
|||
|
vs_infosConn.add("Etat de la connexion : ouverte");
|
|||
|
vs_infosConn.add("------------------------------");
|
|||
|
|
|||
|
dmd = this.connection.getMetaData();
|
|||
|
|
|||
|
vs_infosConn.add("Connexion : " + dmd.getURL());
|
|||
|
vs_infosConn.add("Driver : " + dmd.getDriverName());
|
|||
|
vs_infosConn.add("Version : " + dmd.getDriverVersion());
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
vs_infosConn.add("Etat de la connexion : ferm<72>e");
|
|||
|
vs_infosConn.add("------------------------------");
|
|||
|
|
|||
|
vs_infosConn.add("Connexion : " + this.paramsConn.getUrl());
|
|||
|
vs_infosConn.add("Utilisateur : " + this.paramsConn.Utilisateur);
|
|||
|
vs_infosConn.add("Mot de passe : " + this.paramsConn.Pwd.length() + " caract<63>re(s)");
|
|||
|
}
|
|||
|
}
|
|||
|
catch (SQLException ex)
|
|||
|
{
|
|||
|
this.traiterSQLException(ex);
|
|||
|
}
|
|||
|
|
|||
|
return vs_infosConn;
|
|||
|
}
|
|||
|
|
|||
|
public Vector<String> getNomsColonnes()
|
|||
|
{
|
|||
|
Vector<String> vs_cols = new Vector<String>();
|
|||
|
ResultSetMetaData rsmd;
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
if (this.resultSet != null)
|
|||
|
{
|
|||
|
rsmd = this.resultSet.getMetaData();
|
|||
|
int nbrCols = rsmd.getColumnCount();
|
|||
|
|
|||
|
for (int idCol = 1; idCol <= nbrCols; idCol++)
|
|||
|
if (rsmd.isSearchable(idCol))
|
|||
|
vs_cols.add(rsmd.getColumnName(idCol));
|
|||
|
}
|
|||
|
else if (this.statement == null)
|
|||
|
this.vs_anomalies.add("Vous n'avez pas encore lanc<6E> la requ<71>te!!");
|
|||
|
}
|
|||
|
catch (SQLException ex)
|
|||
|
{
|
|||
|
this.traiterSQLException(ex);
|
|||
|
}
|
|||
|
|
|||
|
return vs_cols;
|
|||
|
}
|
|||
|
|
|||
|
public Vector<Vector<Object>> getDataVector()
|
|||
|
{
|
|||
|
Vector<Vector<Object>> v_datas = new Vector<Vector<Object>>();
|
|||
|
ResultSetMetaData rsmd;
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
rsmd = this.resultSet.getMetaData();
|
|||
|
if (rsmd.getColumnCount() > 0)
|
|||
|
{
|
|||
|
while (this.resultSet.next())
|
|||
|
{
|
|||
|
Vector<Object> vo_ligne = new Vector<Object>();
|
|||
|
for (int idCol = 1; idCol <= rsmd.getColumnCount(); idCol++)
|
|||
|
vo_ligne.add(this.resultSet.getObject(idCol));
|
|||
|
v_datas.add(vo_ligne);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (v_datas.isEmpty())
|
|||
|
this.vs_anomalies.add("Aucune donn<6E>e trouv<75>e!!");
|
|||
|
}
|
|||
|
catch (SQLException ex)
|
|||
|
{
|
|||
|
this.traiterSQLException(ex);
|
|||
|
}
|
|||
|
|
|||
|
return v_datas;
|
|||
|
}
|
|||
|
|
|||
|
public void traiterSQLException(SQLException ex)
|
|||
|
{
|
|||
|
String str_ex;
|
|||
|
|
|||
|
str_ex = "********* SQLException *********\n";
|
|||
|
while (ex != null)
|
|||
|
{
|
|||
|
str_ex = "SQLState : " + ex.getSQLState() + "\n";
|
|||
|
str_ex += "Message : " + ex.getMessage() + "\n";
|
|||
|
str_ex += "------------------------------\n";
|
|||
|
this.vs_erreurs.add(str_ex);
|
|||
|
|
|||
|
ex = ex.getNextException();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void traiterWarning(SQLWarning warn)
|
|||
|
{
|
|||
|
String str_an;
|
|||
|
|
|||
|
str_an = "********* SQLWarning *********\n";
|
|||
|
while (warn != null)
|
|||
|
{
|
|||
|
str_an = "SQLState : " + warn.getSQLState() + "\n";
|
|||
|
str_an += "Message : " + warn.getMessage() + "\n";
|
|||
|
str_an += "------------------------------\n";
|
|||
|
this.vs_anomalies.add(str_an);
|
|||
|
|
|||
|
warn = warn.getNextWarning();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public Vector<String> getErreurs()
|
|||
|
{
|
|||
|
return new Vector<String>(this.vs_erreurs);
|
|||
|
}
|
|||
|
|
|||
|
public Vector<String> getAnomalies()
|
|||
|
{
|
|||
|
return new Vector<String>(this.vs_anomalies);
|
|||
|
}
|
|||
|
|
|||
|
public void effaceErreurs()
|
|||
|
{
|
|||
|
this.vs_erreurs.clear();
|
|||
|
}
|
|||
|
|
|||
|
public void effaceAnomalies()
|
|||
|
{
|
|||
|
this.vs_anomalies.clear();
|
|||
|
}
|
|||
|
}
|