28 novembre 2008
Séance 2

Cf. https://tetras.u-strasbg.fr/prive/pedagogie/LP/P51/index.php?menu=203

====== Cours ======

===== Interface principales =====

  * PreparedStatement et CallableStatement proviennent de Statement
  * CallableStatement : procédures stockées
  * 'DatabaseMetaData', peut être récupéré à partir d'un objet 'Connection' => informations sur la base de données
  * DataSource : plutôt que faire des connexions à la base de données on va se connecter à la source de données qui peut être une base virtuelle (un genre)

===== Classes principales =====

Date n'est pas la même classe dans java.sql et java.util => 2 façons différentes d'appréhender la chose.

===== Pilotes =====

Type III : utile pour de l'embarqué par exemple, car assez léger
Type IV : les meilleurs, mais pas toujours disponibles (payants)

===== Connexion à une BDD =====

jdbc:oracle:thin:@grive.u-strasbg.fr:1521:BASE

  * jdbc : pilote
  * oracle : type de base de données
  * thin : pilote léger d'oracle (cas particulier)
  * @grive.u-strasbg.fr : adresse du serveur
  * 1521 : port d'accès
  * BASE : nom de la base de données

==== La classe Connection ====

prepareStatement : requête paramétrée cachée sur le serveur
prepareCal : procédure stockée

isClosed est généralement à vrai quand c'est NOUS qui avons utilisé la méthode close() pour fermer la connexion à la base de données.

==== Requête de consultation ====

Il ne faut pas considérer que le ResultSet peut tout contenir et donc que nous pouvons faire next() ET previous(). Cela dépend de l'implémentation du pilote JDBC utilisé pour la base de données utilisée.

==== Correspondance entre types Java et SQL ====

getFloat sur un NULL : donne 0
Pour faire que de l'affichage, on peut faire getString()

==== Modification de la base ====

execute UPDATE renvoie un entier qui défini le nombre de lignes modifiées dans la base de données.

==== Instructions SQL paramétrées ====

Les points d'interrogation définissent les paramètres qui seront donnés plus tard.

Il est possible d'utiliser des variables nommées à la place des points d'interrogations : à vérifier.

==== Procédure SQL stockées ====

Peut éviter de faire des transferts de données entre la BDD et le client (lourd ou web). Donc autant tout faire sur le serveur si pas besoin de plus.

Permet aussi d'être indépendant des BDD.

==== Résumé des méthodes de l'interface 'Statement' ====

addBatch : Optimisation de la relation avec le serveur

==== Les méta - données ====

Grâce aux métadatas d'un ResultSet sur une base de donnée on peut savoir quelle version de JDBC est adaptée

==== RowSet ====

 = Abstraction autour d'un ResultSet.

====== Exemple ======

HSQLDB : permet de faire une BDD entièrement en Java, ce qui permet de bosser sur nos cours sans soucis de BDD.






