GestionBaseClient.java
import java.sql.*;
import java.net.URL;
import java.io.*;
import java.lang.*;
import java.net.*;
public class GestionBaseClient
{
private String base;
private String table;
private String login;
private String url;
/*********************************************************************************/
public GestionBaseClient(String ba, String ta, String lo)
{
base=ba;
table=ta;
login=lo;
url="jdbc:postgresql://svrlinux:5432/"+base;
}
public GestionBaseClient(String ba, String ta, String lo, String ur)
{
base=ba;
table=ta;
login=lo;
url=ur+base;
}
/*********************************************************************************/
public void envoiUpdate (String req) throws Exception
{
Class.forName("postgresql.Driver");
//System.out.println("Avant établissement de la connexion!\n");
Connection contact = DriverManager.getConnection(url,login,"");
//System.out.println("après établissement de la connexion!\n");
Statement Requete = contact.createStatement();
// System.out.println("après CreateStatement!\n");
//System.out.println("Requete envoyée : ");
//System.out.println(req);
Requete.executeUpdate(req);
//System.out.println( "après ExecuteUpdate de la requête!\n" );
Requete.close();
contact.close();
}
/*************************************************************************************/
public ResultSet envoiRequete (String req)
//Envoi d'une requete (req) et retourne la reponse
{
ResultSet resultatSet=null;
try {
// Création d'un objet
Class.forName("postgresql.Driver");
// Création d'une liaison avec la base de données spécifiée
Connection contact = DriverManager.getConnection(url,login,"");
//System.out.println("après établissement de la connexion!\n");
// Un objet Statement est nécessaire pour les requêtes SQL au pilote
Statement Requete = contact.createStatement();
//System.out.println("après CreateStatement!\n");
//System.out.println("Requete envoyée : ");
//System.out.println(req);
// Création d'une requête, puis d'un objet ResultSet
resultatSet = Requete.executeQuery(req);
//System.out.println( "après ExecutesQuery de la requête!\n" );
//resultatSet.close();
Requete.close();
contact.close();
} // fin try
catch (SQLException e) { System.out.println("Exception SQL!"); }
catch(ClassNotFoundException e) { System.out.println("deuxième exception!"); }
return(resultatSet);
} //fin
//***********************************************************************************************
public int nbConnections(String Whichadr) //méthode qui renvoie le nombre de connections à WHichadr
{
String requete;
int exist=0;
ResultSet reponseRequete=null;
try
{
requete="SELECT * FROM "+table+" WHERE url='"+Whichadr+"'";
reponseRequete=this.envoiRequete(requete); //envoi de la requete
reponseRequete.first(); // on se positionne à la premiere ligne de la reponse
exist = reponseRequete.getInt("nbconnection"); // on recupere le nombre de connexions
}
catch(SQLException e) {System.out.println("erreur SQL");}
catch(Exception e) {exist=0;}
return(exist);
}
//***********************************************************************************************
public int sommeConnections(String Whichadr) //méthode qui renvoie la some des connections
{
String requete;
int exist=0;
ResultSet reponseRequete=null;
try
{
requete="SELECT SUM(nbconnection) FROM "+table+Whichadr;
reponseRequete=this.envoiRequete(requete); //envoi de la requete
reponseRequete.first(); // on se positionne à la premiere ligne de la reponse
exist = reponseRequete.getInt("SUM"); // on recupere le nombre de connexions
}
catch(SQLException e) {System.out.println("erreur SQL");}
catch(Exception e) {System.out.println(e.toString());}
return(exist);
}
/**********************************************************************************************/
public void ajouteIncrementeActualise(String adr) // incrémenter le nb de connexion à 'Adr'
{
int nbConnexion=0;
java.util.Date ddd=new java.util.Date(); //recuperation de la date !!
try{
nbConnexion=this.nbConnections(adr); //on recupere le nb de connexion à l'adresse voulue
if (nbConnexion<=0) //si il n'y a pas encore eu de connection à l'adresse voulue
{
String req="INSERT INTO "+table+" VALUES('"+adr.toString()+"',1,'"+ddd.toString()+"')";
this.envoiUpdate(req);
}
else
{
nbConnexion++ ; //incrementation du nombre de connections
String requete="UPDATE "+table+" SET nbconnection="+nbConnexion+", dernier_acces='"+ddd.toString()+"' WHERE url like '"+adr+"'";
this.envoiUpdate(requete); //on envoie l'update
}
}
catch(Exception e) {System.out.println("Erreur dans la méthode ajouteIncremente de la classe GestionBase");}
}
//******************************************************************************************************
public String executeRequete(String requete,int nbrColonnes,int posURL,int posInt,int posDate,int longURL,int longInt,int longDate)
//methode qui permet de voir toute la table
{
String resultat="";
ResultSet reponseRequete=null;
try {
reponseRequete=envoiRequete(requete); //envoi de la requete
while(reponseRequete.next()) // tant qu'il reste des lignes dans la reponse...
{
int compteur;
for(compteur=0;compteur<nbrColonnes;compteur++)
{
if (compteur==(posInt-1)) //si on est au niveau du int
{
String tmpres=(reponseRequete.getInt("nbconnection")+"");
int len=tmpres.length();
len=(len<longInt)?len:longInt;
resultat=resultat+(tmpres.substring(0,len))+chaineVide(longInt-len);
}
if (compteur==(posURL-1)) //si on est au niveau de l'url
{
String tmpres=(reponseRequete.getString("url"));
int len=tmpres.length();
len=(len<longURL)?len:longURL;
resultat=resultat+(tmpres.substring(0,len))+chaineVide(longURL-len);
}
if (compteur==(posDate-1)) //si on est au niveau de le date
{
String tmpres=(reponseRequete.getString("dernier_acces"));
tmpres=tmpres.substring(8,10)+tmpres.substring(4,8)+tmpres.substring(0,4)+tmpres.substring(10);
int len=tmpres.length();
len=(len<longDate)?len:longDate;
resultat=resultat+(tmpres.substring(0,len))+chaineVide(longDate-len);
}
resultat=resultat+((compteur<(nbrColonnes-1))?" | ":"");
}
resultat=resultat+"\n";
}
}
catch(SQLException e) {return("erreur SQL dans executeRequete de GestionBaseClient");}
catch(Exception e) {return("Erreur dans executeRequete de GestionBaseClient : "+e.toString());}
return(resultat);
}
//*******************************************************************************************************
public String chaineVide(int nbr)
{
String result="";
int i;
for(i=0;i<nbr;i++)
{
result+=" ";
}
return result;
}
//********************************************************************************************************
public boolean supprimerEnregistrement(String enregistrement,String comparaison)
{
try
{
envoiUpdate("DELETE FROM information WHERE "+enregistrement+" LIKE "+comparaison);
return(true);
}
catch (Exception e)
{
return(false);
}
}
//********************************************************************************************************
public static void main (String args[])
{
GestionBaseClient gest = new GestionBaseClient("projet","information","daillyn");
//System.out.println(gest.executeRequete("SELECT * FROM information",3,1,2,3,30,10,10));
//int test=gest.sommeConnections("%mouquet%");
//System.out.println(""+test);
//gest.connectUrl();
}
}