Programmation Java Avancée

Master M2 TTT --- Feuille n° 5

JDBC

Exercice n° 1

Télécharger le driver PostgreSQL pour JDBC.


Exercice n° 2

Écrire une méthode public static Connection getConnection(); qui établit une connexion avec votre base de donnée, affiche "Connexion établie" et retourne un objet Connection.


Exercice n° 3

Écrire une classe TableFirst dont le constructeur prend en arguments le nom d'une table et un tableau contenant les noms des champs de cette table. Cette classe dispose d'une méthode public void display(Connection co); qui affiche le contenu de la table.


Exercice n° 4

Écrire une méthode public static void display(String table, Connection co); qui affiche le contenu de la table indiquée dans la base avec laquelle la connexion est faite.


Exercice n° 5

Écrire une classe Query permettant de créer des requêtes SQL. Nous nous limiterons à des requêtes SELECT ... FROM ... WHERE ... AND ... (avec autant de AND que l'on veut).
Pour créer la requête, on souhaite permettre à l'utilisateur de spécifier uniquement des couples nom de table/champs soit en tant que clause SELECT soit en tant que clause WHERE. Les valeurs du FROM seront calculées automatiquement.

  1. Implanter la classe Query de sorte que l'on puisse écrire :
         Query query=new Query();
         query.select("user.id");
         query.select("user.name");
         String sql=query.toSQL();
        
    pour générer la requête :
       	 SELECT user.id,user.name FROM user;
        
  2. Faire en sorte que l'on puisse chaîner les requêtes :
         new Query().select("user.id").select("user.name").toSQL();
        
  3. On souhaite de plus gérer les clauses WHERE sachant que l'on peut comparer la valeur de deux champs avec '='.
    Attention, la solution que vous proposerez devra éviter d'avoir à écrire un parseur d'expressions.
    Modifier votre code pour que l'on puisse créer une requête de ce type :
       	 SELECT id,name,street FROM user, address WHERE user.id = address.user_id;
        
    Attention à la gestion des constantes ... WHERE user.id=3
  4. Ajouter la gestion des '<>', '<', '>'.