Programmation Java Avancée
Master M2 TTT --- Feuille n° 5
JDBC
Exercice n° 1
Ouvrir votre base de données PostgreSQL sur le serveur étudiant.
Télécharger le driver PostgreSQL pour JDBC.
Exercice n° 2
Établir une connection via JDBC avec cette base de données.
Exercice n° 3
Ecrire une énumeration FieldType dont les valeurs sont les types SQL
que l'on veut utiliser (INTEGER, VARCHAR, etc.).
Ecrire une classe Table dont le constructeur prend pour arguments
une base de données,
le nom de la table et des tableaux indiquant le nom, le type et éventuellement les contraintes appliquées à chaque champ, ainsi que les propriétés
de la table. La création d'un objet de cette table induira la création
d'un table ayant ces propriétés dans la base.
Exercice n° 4
Écrire la méthode toString de cette classe de sorte que le résultat contienne le contenu de la table. Ecrire aussi une methode drop
qui efface la table de la base de données.
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.
-
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;
-
Faire en sorte que l'on puisse chaîner les requêtes :
new Query().select("user.id").select("user.name").toSQL();
-
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
-
Ajouter la gestion des '<>', '<', '>'.