Java Database Connectivity (JDBC) - Langage SQL

Dimension: px
Commencer à balayer dès la page:

Download "Java Database Connectivity (JDBC) - Langage SQL"

Transcription

1 Java Database Connectivity (JDBC) - Langage SQL Chapitres traités Principe de base Ce chapitre traite essentiellement de la relation entre Java et les bases de données. Dans cette étude, je m'intéresse à l'écriture standard de tout programme Java gérant les bases de données quelque soit l'environnement de développement intégré utilisé. Si vous désirez utiliser des objets spécialisés par rapport à JBuilder, toute une série d'études leurs sont consacrées. Pour en savoir plus sur l'environnement de JBuilder avec les objets relatifs aux bases de données. Principe de base Les systèmes de base de données non seulement assure le traitement des fichiers, mais en plus organisent les données de manière à faciliter l'obtention des résultats d'une requête complexe. Les bases de données les plus courantes dans les ordinateurs qui utilisent Java sont les bases de données relationnelles. Langage SQL L'un des principaux obstacles auxquels les programmeurs de bases de données doivent faire face est la grande diversité des formats de bases de données employés actuellement. Chaque serveur de bases de données utilise en fait ses propres techniques, qualifiées de "propriétaires", pour accéder aux données. Afin de simplifier l'utilisation des serveurs de bases de données relationnelles, un langage standard appelé SQL (Structured Query Langage, ou langage de requêtes structuré) a été inventé. Ce langage permet de ne pas avoir à apprendre différents langages de requêtes de bases de données pour les divers formats de bases de données. Dans le domaine de la programmation de bases de données, l'opération consistant à demander des enregistrements stockés dans une base de données est appelé requête. SQL permet d'envoyer des requêtes complexes à une base de données et d'obtenir les enregistrements demandés, dans l'ordre choisi. Le programmeur pourra, par exemple, créer une requête demandant de fournir les enregistrements pour lesquels le dernier paiement date de plus de 180 jours et pour lesquels le montant dû est supérieur 100. SQL peut également servir à contrôler l'ordre dans lequel les enregistrements sont affichés. Le programmeur peut, par exemple, demander qu'apparaisse d'abord le numéro de Sécurité sociale, puis le nom du bénéficiaire du prêt, le montant dû, etc. SQL permet d'accomplir toutes ces opérations sans même avoir à apprendre le langage de requête spécifique à la base de données utilisée. La plupart des formats de bases de données offrent un haut degré de compatibilité avec SQL. En théorie, vous devriez donc pouvoir utiliser les mêmes commandes SQL pour tous les systèmes de gestion de bases de données compatibles avec ce langage. SQL constitue l'approche standard qu'on choisi les éditeurs de logiciels en matière d'accès aux bases de données relationnelles. Parmi les logiciels de bases de données relationnelles les plus connus, mentionnons Microsoft Acces, Sybase, Oracle, Informix, Microsoft SQL Server, MySQL, etc. Les principales commandes du langage SQL sont spécifiées à la fin de cette étude.. Connexion à une base de données - JDBC Java permet donc aux programmeurs d'écrire du code qui met en oeuvre les requêtes SQL pour retrouver des renseignements dans des bases de données relationnelles, mais ce n'est pas tout. Le langage Java est un langage universel qui, par essence, peut fonctionner sur différentes plate-formes. De plus, il faut que le programme puisse se connecter avec n'importe quel serveur de base de données utilisée dans le commerce. Java doit donc disposer d'un système de connexion polivalent. La technologie de connectivité de bases de données Java, appelé JDBC (Java Database Connectivity), est une bibliothèque de classes (et surtout d'interfaces) qui permet de travailler avec différents serveurs de bases de données relationnelles. Une fois que la connexion est établie, les interfaces prévues par la JDBC permettent d'obtenir tous les renseignements nécessaires en utilisant tout simplement le langage de requête SQL. Malheureusement, il y a un "hic" : avant de pouvoir utiliser la bibliothèque de classes JDBC, vous devez configurer une source de données de telle sorte que Java puisse y accéder. Pour cela, vous devez récupérer ce que l'on appelle un pilote correspondant à la base de données relationnelle utilisée. La plupart des fabricants propose de tels pilotes, pour que l'on puisse effectivement se connecter à leur base de données depuis Java. Pilotes de bases de données Les programmes Java qui utilisent les interfaces et les classes JDBC peuvent suivre le modèle de programmation traditionnel, qui consiste à formuler des instructions SQL puis à traiter les données qui en résultent. Le format de la base de données et de la plate-forme pour laquelle elle a été conçue n'ont pas d'importance. L'indépendance vis-à-vis de la plate-forme et du format de base de données est assurée par un gestionnaire de pilotes. Les classes de la bibliothèque JDBC sont en effet largement dépendantes de gestionnaires de pilotes, qui permettent de savoir quels pilotes sont nécessaires pour accéder aux enregistrements d'une base de données. Chaque format de base de données utilisé dans un programme nécessite un pilote différent. Les pilotes de bases de données JDBC sont, la plupart du temps, écrits complètement en Java. L'ensemble du pilote correspond à une bibliothèque (*.jar) et la classe de connexion porte souvent le nom de Driver. Utilisation d'une base de données en Java La bibliothèque de classes de JDBC inclut des classes adaptées à chacune des tâches généralement associées aux bases de données. Elle permet en gros de faire trois choses : 1. D'établir une connexion avec une base de données en adéquation avec le pilote choisi. 2. D'exécuter une requête SQL sur la base de données connectée. 3. De visualiser les enregistrements résultant de la requête. Base de données MySQL et configuration de JBuilder Dans cette leçon, nous allons mettre en oeuvre notre première base de données. Les exemples proposé seront simple, le but étant de comprendre tous les mécanismes qui sont en jeu. Le serveur de base de données que j'ai choisi est MySQL, mais il est bien entendu possible d'en choisir un autre, le principe de connexion restant identique. Il va être nécessaire de régler JBuilder pour qu'il soit capable de se connecter au serveur de base de données MySQL, ce qu'il ne sait pas faire à priori. D'après ce que nous avons étudié au préalable, la connexion ne s'effectue qu'au travers d'un pilote qui doit être récupéré soit par le fournisseur du serveur de base de données, soit éventuellement par l'intermédiaire d'internet.

2 Récupération du pilote Le nom du pilote correspondant au serveur MySQL est de la forme MySQL Connector/J (version). Vous avez, bien entendu, la version pour Linux (tar.gz) et la version pour Windows (zip). Actuellement, celui que j'utilise s'appelle plus précisément MySQL Connector/J 3.1. Sur le site, d'autres versions vous sont proposées. Prenez la dernière version stable. Dernière version stable d un pilote JDBC pour MySQL : Placement de la librairie représentant l'ensemble des classes du pilote avec les librairies de JBuilder N'oubliez pas qu'un pilote est constitué d'un ensemble de classes Java qui sont localisées au sein d'une bibliothèque (jar). La première démarche, après avoir récupéré ce fichier compressé, va être d'extraire cette bibliothèque et de la placer à un endroit convenable. Le fichier que vous venez de récupérer comporte beaucoup plus que la bibliothèque, et il est relativement conséquent.. Il ne nous reste maintenant plus qu'à configurer JBuilder pour qu'il reconnaisse cette bibliothèque afin de pouvoir l'intégrer dans les applications gérant les bases de données (pour une connexion avec MySQL, bien entendu). Souvenez-vous qu'il est possible que ce pilote (cette bibliothèque) soit automatiquement intégré à chaque projet en réglant Propriété du projet par défaut..., qui se trouve dans le menu Projet. Je n'appliquerais pas cette démarche, parce que tous les projets n'utilisent pas systématiquement les bases de données. Connexion à une base de données Puisque tout est correctement installé, nous allons voir comment se connecter à une base de données. Cette connexion s'effectue en deux étapes : 1. Il faut d'abord charger le bon pilote JDBC en mémoire afin que l'interconnexion avec le serveur de base de données puisse se réaliser correctement. 2. Une fois que la communication avec le serveur de base de données est possible, il faut ensuite se connecter avec la base de données à traiter. Toutes les classes que nous utilisons pour gérer les bases de données nécessite d'importer la paquetage <java.sql>. Base de données gestion avec une seule table personne Pour tester nos premières requêtes, nous allons constituer une base de données avec une seule table dont voici la définition : Voici le contenu de la table Chargement de la classe Driver représentant le pilote de la base de données MySql Avant tout, nous devons charger en mémoire le pilote que nous souhaitons utiliser pour établir la connexion. Le pilote est représenté par une classe (elle s'appelle toujours Driver - pilote en anglais) et c'est la Machine Virtuelle Java qui s'occupe de son chargement. Cette classe implémente l'interface java.sql.driver et peut être chargée en appelant la méthode de classe forname de la classe java.lang.class : ou Class.forName("org.gjt.mm.mysql.Driver"); Class.forName(String) : signifie faire construire par la JVM un objet Class contenant toutes les interfaces du programme choisi.. Ce chargement manuel est intéressant. Il devient très facile de changer de logiciel de base de données. Seule cette ligne est à modifier. Il suffit de changer le nom du nouveau pilote représentant le nouveau serveur de base de données. Avec cette technique, il est même possible d'utiliser plusieurs serveur de bases de données dans le même programme. Plus précisément, ce chargement consiste à compléter l'attribut drivers de la classe utilitaire java.sql.drivermanager. Cet attribut est en réalité un vecteur qui permet d'envisager de stocker effectivement plusieurs pilotes et donc de gérer plusieurs serveur de base de données pour une même application Java. Cette classe DriverManager est vraiment prépondérante, puisque c'est elle qui s'occupe de la gestion des serveurs utilisés et qui permet indirectement d'établir la communication entre le programme Java et la (ou les) bases de données.

3 En réalité, La JDBC est essentiellement composée d'interfaces qui représentent les classes effectives délivrées par la bibliothèque du pilote. Chacune de ces classes porte le même nom que l'interface. La classe DriverManager met juste en relation ces interfaces avec les bonnes classes qui constitue le pilote afin que la communication s'effectue bien sur le bon serveur de base de données. Le programme Java lui ne communique avec la base de données qu'au travers de ces interfaces. Ainsi, grâce à ce système, le programme Java peut s'exécuter avec n'importe quel serveur de base de données. Il suffit juste de récupérer le pilote adapté. Connexion à la base de données avec le couple java.sql.drivermanager et java.sql.connection Toute l'infrastructure est prête. Nous pouvons maintenant établir la connexion avec la base de données que nous devons traiter. Nous venons de le voir, le pilote dispose d'un certain nombre d'interface. L'une de ces interfaces disponibles nous sert à établir la connexion avec la base de données ; Il s'agit de java.sql.connection. C'est une interface spécialisée pour les bases de données et propose de nombreux services. L'objet de type Connection est capable de nous permettre de décrire : 1. les tables de la base, 2. la version SQL qu'elle supporte, 3. ses procédures stockées, 4. ses capacités de connexion, etc. Par défaut, Connection est en mode auto-commit, c'est-à-dire que chaque changement dans la base est effectivement enregistré après l'exécution de chaque requête. Pour que cet objet soit correctement initialisé, il est nécessaire de faire appel au service permettant de gérer les pilotes JDBC à l'aide de la classe DriverManager, que nous venons de voir plus haut, et d'effectuer la connexion proprement dite grâce à la méthode de classe getconnection(string). Connection connexion = DriverManager.getConnection("jdbc:mysql://localhost/gestion?user=root&password=manu"); Examinons chacun des termes de cette instruction. La méthode getconnection est appelée : 1. via la classe DriverManager. Cette dernière regroupe toutes les méthodes permettant la détection des pilotes appropriés pour établir une connexion. 2. demande qu'on lui indique en paramètre où se trouve la base de données, ainsi que le nom d'utilisateur et son mot de passe. Cette information est stockée sous la forme d'une chaîne de caractères qui correspond à l'url JDBC. Lorsque la connexion est enfin réalisée, la méthode getconnection() retourne en résultat un objet de la classe qui implémente l'interface java.sql.connection. Cet objet est essentiel, puisque c'est ensuite à travers lui que va s'effectuer la communication entre votre programme Java et la base de donnée MySql (par exemple). Construction de l'url JDBC Pour établir une connexion, il est nécessaire d'indiquer les informations telles que le protocole utilisé, le lieu où se trouve la base de données, le nom d'utilisateur et son mot de passe. Le protocole ainsi que le lieu où se trouve la base de données s'écrivent sous la forme d'une URL, appelée communément URL JDBC. Elle s'écrit comme suit : "jdbc:mysql://" + nomhôte + " : " + port + " / " + nomdelabase + "?user=" + utilisateur + "&password=" + motdepasse où : 1. nomhôte : est une variable de type String qui contient soit le nom réseau de la machine hébergeant la base de données, soit l'adresse IP de cette machine. 2. port : est une variable de type String qui contient le numéro du port correspondant au service de la base de données. Si vous ne changer pas de numéro de service, cette variable peut être ommise. Le numéro du service correspondant au serveur MySql est 3306 par défaut. 3. nomdelabase : est une variable de type String qui contient le nom de la base de données à traiter sur le serveur MySql. 4. utilisateur : correspond au nom du compte de l'utilisateur désirant travailler sur la base de données. 5. motdepasse : correspond au mot de passe associé au compte utilisateur. Le nom d'utilisateur ainsi que son mot de passe sont nécessaires à la mise en place d'une connexion. En effet, il existe différents types d'utilisateurs allant du simple consultant à l'administrateur en passant par le gestionnaire. Pour distinguer chaque utilisateur et déterminer son droit d'accès, l'administrateur de la base crée des comptes utilisateurs caractérisés par un login et un mot de passe.

4 Nous disposons aussi de la méthode getconnection avec deux paramètres supplémentaires représentant respectivement un utilisateur référencé par l'administrateur de la base de données et son mot de passe. Cette deuxième méthode permet de bien séparer l'utilisateur de la localisation de la base de données. Par ailleurs, la syntaxe s'en trouve simplifiée. Personnellement, je préfère cette deuxième approche. Utiliser une connexion JDBC (java.sql.connection) Nous venons de le voir, la connexion renvoyée par la méthode getconnection de la classe java.sql.drivermanager est l'objet qui est principalement utilisé pour effectuer des opérations sur la base de données. La classe de cet objet implémente l'interface java.sql.connection dont voici les principales méthodes : createstatement : cette méthode renvoie une instance de java.sql.statement utilisée ensuite pour exécuter une requête SQL sur la base de données. C'est très souvent cette méthode qui est utilisée pour établir une communication directe avec la base de données afin de la modifier, ou tout simplement pour la consulter. preparestatement : quelque fois, il est préférable de préparer des requêtes afin de pouvoir ultérieurement leur affecter des variables et des données de manière dynamique. Il existe une instance de java.sql.preparedstatement délivrée par la méthode preparestatement qui permet de précompiler les instructions SQL paramétrées. preparecall : cette méthode prépare l'appel aux procédures stockées de la base de données et renvoie une instance de java.sql.callablestatement. setautocommit, commit, rollback : gèrent les transactions sur la base de données. getmetadata : cette méthode renvoie une instance de java.sql.databasemetadata pour obtenir des informations sur la base de données et sur ses possibilités. close et isclosed : gèrent la fermeture d'une connexion. Consulter ou modifier une base de données (java.sql.statement) Une fois que la connexion est établie, nous pouvons effectuer toutes les requêtes nécessaires afin d'exploiter au mieux l'ensemble des tables qui constitue cette base de données. Il suffit simplement de proposer les requêtes prévues par le langage SQL. L'étape suivante est donc la communication effective avec la base de données et, nous venons juste de le voir, il existe plusieurs possiblités pour communiquer. Si vous choisissez la communication directe, il faut mettre en oeuvre un objet dont la classe implémente l'interface Statement. La classe qui implémente l'interface Statement construit un tube de communication bidirectionnel qui permet à l'application java de proposer les requêtes par ce tube. En retour, la base transmet le ou les résultats par le même canal. Pour créer un objet dont la classe implémente l'interface Statement, il suffit de faire appel à la méthode createstatement() définie à l'intérieur de la classe Connection. Lorsque cet objet est créé, le tube de communication reste ouvert tant que l'objet est chargé en mémoire. Statement instruction = connexion.createstatement(); instruction représente donc le tube de communication directe qui va permettre la consultation ou la modification de certains éléments de la base de données choisie. Après la connexion et la mise en place du tube de communication, nous pouvons effectuer différents traitements sur la base de données. Les deux types de traitement les plus utilisées qui correspondent donc à deux méthodes de l' interface java.sql.statement sont : 1. La consultation : (méthode executequery() de Statement) : permet de récupérer les données stockées dans une table et de vérifier également qu'une valeur à bien été enregistrée dans la base. Précisément, cette méthode exécute une sélection SQL se servant de l'instruction SELECT en paramètre et renvoie une instance de java.sql.resultset utilisée pour énumérer les champs recherchés ligne par ligne. 2. La modification : (méthode executeupdate() de Statement) : pour insérer, mettre à jour, ou supprimer un élément de cette base. Pour réaliser ce genre de traitement, il suffit de spécifier la requête SQL adaptée au paramètre de cette méthode.

5 Consultation d'une table et exploiter les résultats de la base de données (java.sql.resultset) D'après ce que nous venons de découvrir, pour consulter les données issues d'une table, nous devons utiliser la méthode executequery de l'objet de type Statement dont les valeurs sont ensuite stockées dans l'objet dont la classe implémente l'interface java.sql.resultset. ResultSet résultat = instruction.executequery("select * FROM personne"); Cet objet de type ResultSet contient donc, sous la forme d'une table, toutes les données résultant d'une requête de type SELECT. ResultSet comme son nom l'indique propose donc un ensemble de résultats qui correspond à la requête demandée.. L'intérêt de ResultSet est de pouvoir naviguer à l'intérieur des données avec des méthodes simples. En effet, cet objet fournit un ensemble de méthodes qui offrent la possibilité de se déplacer ligne par ligne à l'intérieur de la table à l'aide d'un curseur spécifique : boolean next ( ) : déplace le curseur vers la ligne suivante. boolean previous ( ) : déplace le curseur vers la ligne précédente. boolean first ( ) : déplace le curseur vers la première ligne. boolean last ( ) : déplace le curseur vers la dernière ligne. boolean absolute (int n) : déplace le curseur sur la ligne désignée par n. La première ligne est référencée à 1. boolean relative (int n) : déplace le curseur de n par rapport à la position actuelle. boolean beforefirst ( ) : déplace le curseur juste avant la première ligne. boolean afterlast ( ) : déplace le curseur juste après la dernière ligne. Il faut préciser que lorsque nous obtenons la première fois un objet de type ResulSet, le curseur est positionné juste avant la première ligne. Par ailleurs, ces méthodes retournent un booléen afin de préciser si la ligne désirée existe ou pas. Par exemple, lorsque nous utilisons la méthode next(), elle retourne la valeur false lorsque le curseur a dépassé la dernière ligne de la table des données. Toujours, par rapport au curseur, la classe implémentée par java.sql.resultset dispose de méthodes supplémentaires qui contrôle, son emplacement actuel : int getrow ( ) : retourne la position actuelle du curseur. boolean isbeforefirst ( ) : est-ce que le curseur se trouve juste avant la première ligne? boolean isafterlast ( ) : est-ce que le curseur se trouve juste après la dernière ligne? boolean isfirst ( ) : est-ce que le curseur se trouve sur la première ligne? boolean islast ( ) : est-ce que le curseur se trouve sur la dernière ligne? Une fois que la ligne désirée est atteinte, vous pouvez ensuite accéder à n'importe quel champ, grâce également à des méthodes appropriées - getxxx ( ) - qui permettent en même temps de récupérer le bon type de variable suivant l'enregistrement prévue dans la base de données. Ansi, les méthodes comme getstring, getint, getdate, getobject, etc. renvoient la valeur d'un des champs d'une ligne. Chacune de ces méthodes existe sous deux formes qui prennent en paramètre : soit une chaîne de caractère correspondant à l'identificateur désigné par la colonne d'un champ de la table. soit un entier représentant le numéro d'ordre du champ. Le numéro du premier champ est 1. Voici la liste des méthodes : String getstring(int _int); String getstring(string string); boolean getboolean(int _int); boolean getboolean(string string); byte getbyte(int _int); byte getbyte(string string); short getshort(int _int); short getshort(string string); int getint(int _int); int getint(string string); long getlong(int _int); long getlong(string string); float getfloat(int _int); float getfloat(string string) ; double getdouble(int _int); double getdouble(string string) ; Date getdate(int _int); Date getdate(string string) ; Time gettime(int _int); Time gettime(string string); Blob getblob(int _int); Blob getblob(string string); Clob getclob(int _int); Clob getclob(string string); Array getarray(int _int); Array getarray(string string); Il existe une dernière méthode bien utile lorsque nous désirons connaître la constitution exacte d'une table avec notamment le nom des colonnes, les types utilisés, etc. Ce sujet est d'ailleurs traité un peu plus loin dans la leçon. Cette méthode s'appelle getmetadata() dont voici la signature : ResultSetMetaData getmetadata();

6 A titre d'exemple, et en reprenant la table Personne de la base de données Gestion, vous avez ci-dessous le codage complet qui visualise en mode console le contenu de l'ensemble de la table (sauf pour la clé primaire). package testbasedonnées; // Source du programme - lecture de la table < Personne > de la base de données < Gestion > public class Principale { // Class.forName("org.gjt.mm.mysql.Driver"); Statement instruction = connexion.createstatement(); ResultSet résultat = instruction.executequery("select * FROM personne"); while (résultat.next()) { System.out.println(" "); System.out.println("Nom : "+ résultat.getstring("nom")); System.out.println("Prénom : "+ résultat.getstring("prenom")); System.out.println("Civilité : "+ résultat.getstring("civilite")); System.out.println("Age : "+ résultat.getint("age")); catch (ClassNotFoundException ex) { System.err.println("Erreur Driver"); catch (SQLException ex) { System.err.println("Erreur Localisation BD"); Résultat du programme Nom : Lagafe Prénom : Gaston Civilité : Monsieur Age : Nom : Guillemet Prénom : Virgule Civilité : Mademoiselle Age : 2 Libération des connexions Une fois que nous avons obtenu les résultats escomptés, il faut libérer les connexions devenues inutiles. En effet, Chaque serveur de base de données disposent d'un nombre de connexions simultanées limitées. Dès que possible, il nous incombe de donner la main aux autres clients éventuels. Donc, dans la pratique, une fois votre travail terminé avec ResultSet, Statement ou Connection, appelez immédiatement la méthode close(). En effet, en dehors des considérations de connexions simultanées, ces objets utilisent également de grandes structures de données, et il ne faut pas attendre que le ramasse-miettes s'en charge. Ceci-dit, il n'est pas nécessaire, sauf cas particulier, d'appeler systématiquement les méthodes close() de chacune de ces classes - ResultSet, Statement, Connection. En effet, la méthode close() d'un objet Statement ferme automatiquement le jeu de résultats associé, donné par un ResultSet, si l'instruction dispose d'un jeu de résultat ouvert. De la même façon, la méthode close() de la classe Connection ferme toutes les instructions de la connexion. Ainsi dans la pratique, c'est cette dernière que nous devons clôturer. Pour être sûr que la connexion soit impérativement libérée, quelque soit les péripéties (lancement d'une exception ou non), il est souhaitable de placer l'instruction close() à l'intérieur d'un bloc finally, en testant, bien entendu, si l'objet représentant la connexion existe vraiment. En reprenant l'exemple précédent, voilà comment il faudrait le réécrire pour tenir compte de la libération de la connexion : package testbasedonnées; // Source du programme - lecture de la table < Personne > de la base de données < Gestion > public class Principale { Statement instruction = connexion.createstatement(); ResultSet résultat = instruction.executequery("select * FROM personne"); while (résultat.next()) { System.out.println(" "); System.out.println("Nom : "+ résultat.getstring("nom")); System.out.println("Prénom : "+ résultat.getstring("prenom")); System.out.println("Civilité : "+ résultat.getstring("civilite")); System.out.println("Age : "+ résultat.getint("age")); catch (ClassNotFoundException ex) { System.err.println("Erreur Driver"); catch (SQLException ex) { System.err.println("Erreur Localisation BD");

7 finally { if (connexion!=null) connexion.close(); // libération de la connexion si elle existe Dans la suite de cette étude, je ne m'occuperai plus de la fermeture des connexions. Je ne désire pas alourdir les différents codes que je propose. Toutefois, il faut bien penser qu'il est préférable de libérer les connexions avec la base de données systématiquement. Modifier la base de données Pour modifier le contenu d'une base de données, il convient d'utiliser la méthode executeupdate() de Statement (ou de PreparedStatement). Grâce à cette méthode, les requêtes SQL : INSERT, UPDATE, DELETE (entre autres) permettent respectivement d'insérer, mettre à jour, ou supprimer un élément de cette base, et ceci directement à l'intérieur du programme Java. Pour réaliser ce genre de traitement, il suffit de spécifier la requête SQL au paramètre de cette méthode. Vous avez ci-dessous un exemple qui permet d'insérer une nouvelle personne dans notre base de données. package testbasedonnées; // Insertion d'une nouvelle personne dans la base de données public class Principale { Statement instruction = connexion.createstatement(); instruction.executeupdate("insert INTO PERSONNE (Nom, Prenom, Civilite, age)" +" VALUES ('Durand', 'Eric', 'Monsieur', 42)"); catch (ClassNotFoundException ex) { System.err.println("Erreur Driver"); catch (SQLException ex) { System.err.println("Erreur Localisation BD"); Après l'exécution de ce programme, voici le résultat obtenu sur la table Personne. Récupérer des informations sur la base de données Avec SQL, les données qui décrivent une base de données ou l'une de ses parties sont appelées métadonnées (pour les distinguer des données elles-mêmes qui sont stockées dans la base de données). Vous pourrez rencontrer deux types de métadonnées : 1. les métadonnées relative à la base de données représentées par l'interface java.sql.databasemetadata qui permet de restituer notamment les tables constituant la base de données. 2. et celles concernant un ensemble de résultats, correspondant cette fois-ci, plus particulièrement aux informations liées à une table de la base de données, comme le nombre de colonnes constituant la table, le nom donnée à une colonne, le type lié au champ de la colonne, etc. Ces métadonnées sont représentées par l'interface java.sql.resultsetmetadata. java.sql.databasemetadata La méthode getmetadata() d'une connexion (issue de java.sql.connection) renvoie un objet dont la classe implémente java.sql.databasemetadata. Les méthodes de cette interface permettent d'obtenir des informations complètes sur la base de données : 1. table, 2. index, 3. procédures stockées, 4. champs, 5. droits d'utilisation... La plupart de ces informations sont renvoyées sous forme d'une instance de java.sql.resultset utilisée pour énumérer les réponses. Voici juste quelques méthodes qui me paraissent intéressantes : ResultSet gettable(string catalog, String schemapattern, String tablenamepatern, String types [ ]) ; Récupère la description de toutes les tables d'un catalogue qui correspond à un modèle de nom de table et de schéma, ainsi qu'à des critères de type. Un schéma décrit un groupe de tables associées et des droits d'accès. Un catalogue décrit un groupe de schémas associés. Ces concepts sont très importants pour structurer les grandes bases de données. Les paramètres catalog et schéma peuvent être vide " " pour retrouver des tables sans catalogue et sans schéma, ou null pour renvoyer des tables indépendantes d'un catalogue ou d'un schéma.

8 Le tableau types contient les noms des types de tables à inclure. Les types les plus courants sont TABLE, VIEW, SYSTEM TABLE, GLOBAL TEMPORY, LOCAL TEMPORY, ALIAS, et SYNONYM. Si types vaut null, les tables de n'importe quel type peuvent être renvoyées. L'ensemble des résultats possèdent cinq colonnes, qui sont toutes de type String, comme le montre le tableau ci-dessous. Numéro Nom de la colonne Description 1 TABLE_CAT Catalogue de la table (peut être null) 2 TABLE_SCHEM Schéma de la table (peut être null) 3 TABLE_NAME Nom de la table 4 TABLE_TYPE Type de la table 5 REMARKS Commentaire sur la table String getusername( ) ; Renvoie le nom de l'ordinateur hôte ainsi que le nom de l'utilisateur. String gettabletypes( ) ; Renvoie juste le type de table. ResultSet getcatalogs( ) ; Renvoie l'ensemble des bases de données stockées dans le service. Vous pouvez gérer ainsi la totalité du service de base de données. A la connexion, il est préférable de ne spécifier que la localisation du serveur de base de données sans ajouter une base de données en particulier, mais rien ne l'empêche. Connection connexion = DriverManager.getConnection("jdbc:mysql://localhost/", "root", "manu"); DatabaseMetaData bd = connexion.getmetadata(); ResultSet résultat = bd.getcatalogs(); while (résultat.next()) System.out.println(résultat.getString(1)); Résultat du programme gestion mysql test java.sql.resultsetmetadata Il existe donc une deuxième classe de métadonnées, ResultSetMetaData, qui apporte des informations sur un ensemble de résultats. Lorsque vous obtenez un ensemble de résultats à partir d'une requête, vous pouvez demander ensuite, le nombre de colonne total, le nom de la colonne, le type du champ, le nombre d'éléments de chaque colonne, etc. Bref, pas mal de méthodes permettent de retrouver des informations concernant la table : Méthodes Résultat Type getcolumncount( ) ; Nombre de colonne constituant la table int gettablename( i ) ; Nom de la table String getcolumnname( i ) ; Renvoie le nom de la colonne String getcolumnlabel( i ) ; Fournit le titre suggéré de la colonne String getcolumntypename( i ) ; Type de la colonne au sens base de données String getcolumndisplaysize( i ); Taille de la colonne int isnullable( i ) ; Si la colonne accèpte des valeurs nulles int isautoincrement( i ) ; Si la colonne s'auto-incrémente boolean Attention, contrairement aux indices de tableaux, les numéros de colonnes de base de données commencent à 1.. Exemple mettant en oeuvre les deux types de metadonnées Voici un petit programme qui évalue les différentes méthodes issues de ResultSetMetaData au travers de la table Personne de la base de données Gestion. package testbasedonnées; // Source du programme - Récupération des infos de la table < Personne > de la base de données < Gestion > public class Principale { Statement instruction = connexion.createstatement(); DatabaseMetaData meta = connexion.getmetadata(); ResultSet rs = meta.gettables(null, null, null, null); System.out.println(" "); while (rs.next()) { System.out.println("Catalogue de la table : " + rs.getstring(1)); System.out.println("Schéma de la table : " + rs.getstring(2)); System.out.println("Nom de la table : " + rs.getstring(3)); System.out.println("type de table : " + rs.getstring(4)); System.out.println("commentaire sur la table : " + rs.getstring(5)); System.out.println(" "); System.out.println("Nom utilisateur : "+ meta.getusername()); rs = meta.gettabletypes(); while (rs.next()) System.out.println("Type de table : " + rs.getstring(1)); System.out.println(" "); ResultSet table = instruction.executequery("select * from Personne"); ResultSetMetaData infotable = table.getmetadata(); System.out.println("Nom de la table : "+infotable.gettablename(1)); System.out.println("Nombre de colonnes : "+infotable.getcolumncount()); for (int i=1; i<=infotable.getcolumncount(); i++) { System.out.print(" : "); System.out.println("Colonne n "+i); System.out.println("Label : "+infotable.getcolumnlabel(i)); System.out.println("Nom : "+infotable.getcolumnname(i)); System.out.println("Nom de table : "+infotable.gettablename(i));

9 System.out.println("Type : "+infotable.getcolumntypename(i)); System.out.println("Taille : "+infotable.getcolumndisplaysize(i)); System.out.println("Null? "+infotable.isnullable(i)); System.out.println("Auto-incrément? "+infotable.isautoincrement(i)); catch (ClassNotFoundException ex) { System.err.println("Erreur Driver"); catch (SQLException ex) { System.err.println("Erreur Localisation BD"); Résultat du programme Catalogue de la table : Schéma de la table : null Nom de la table : personne type de table : TABLE commentaire sur la table : Nom utilisateur : Type de table : TABLE Type de table : LOCAL TEMPORARY Nom de la table : Personne Nombre de colonnes : : Colonne n 1 Label : idpersonne Nom : idpersonne Nom de table : Personne Type : INTEGER UNSIGNED Taille : 10 Null? 0 Auto-incrément? true : Colonne n 2 Label : Nom Nom : Nom Nom de table : Personne Type : VARCHAR Taille : 45 Null? 0 Auto-incrément? false : Colonne n 3 Label : Prenom Nom : Prenom Nom de table : Personne Type : VARCHAR Taille : 45 Null? 0 Auto-incrément? false : Colonne n 4 Label : Civilite Nom : Civilite Nom de table : Personne Type : CHAR Taille : 12 Null? 0 Auto-incrément? false : Colonne n 5 Label : age Nom : age Nom de table : Personne Type : INTEGER UNSIGNED Taille : 10 Null? 0 Auto-incrément? false Remarques : l'indice de la méthode gettablename() importe peu. Par ailleurs, que nous utilisions la méthode getcolumnname() ou getcolumnlabel(), le résultat pour cet exemple est identique. Toutefois, lorsque nous constituons une table, il est possible de faire la différence entre le label qui est juste un titre donné à la colonne (juste pour la visualisation), avec le nom véritable du champ. Les requêtes paramétrées Dans un programme, vous pouvez être ammené a proposer des requêtes relativement précises afin de retrouver un élément de l'ensemble de la base de données. Ainsi, nous pouvons rechercher, par exemple, toute la description d'une personne en spécifiant juste son nom. Voici l'exemple de requête à prévoir : SELECT * FROM personne WHERE nom = 'LAGAFE' Résultat de la recherche Nom : Lagafe Prénom : Gaston Civilité : Monsieur Age : Si plus tard, vous devez avoir le même type de recherche, mais pour une autre personne, vous spécifierez alors la requête suivante : SELECT * FROM personne WHERE nom = 'GUILLEMET' Résultat de la recherche Nom : Guillemet Prénom : Virgule Civilité : Mademoiselle Age : 2

10 Préparer les requêtes Plutôt que de générer une requête SQL à chaque besoin, nous pouvons préparer une seule requête paramétrée, et nous en servir à chaque fois, mais avec des valeurs de paramètre différentes. Chaque paramètre d'une requête préparée est spécifié par un?. En reprenant l'exemple précédent, nous pourrions prévoir une requête dont le nom servirait de paramètre. En voici la syntaxe : SELECT * FROM personne WHERE nom =? Cette technique apporte une certaine amélioration au niveau des performances. Chaque fois que la base de données exécute une requête, elle commence par déterminer une stratégie lui permettant d'exécuter la requête de manière efficace. En préparant une requête et en l'utilisant par la suite, vous vous assurez que la tâche de répartition n'est faite qu'une seule fois. java.sql.preparedstatement Pour mettre en oeuvre les instructions préparées, c'est-à-dire les requêtes paramétrées, vous devez cette fois-ci utilisée la classe qui implémente l'interface PreparedStatement en lieu et place de la classe Statement, et par la même occasion, utiliser la méthode preparestatement de la classe Connection qui attend la requête paramétrée en argument. Voici le codage correspondant à la requête paramétrée ci-dessus : PreparedStatement instruction = connexion.preparestatement("select * FROM personne WHERE nom =?"); void setstring(int numéroparamètre, String valeurparamètre) ; Avant d'exécuter une instruction préparée, vous devez affecter les valeurs aux paramètres avec la méthode setxxx associée. Comme pour les méthodes getxxx de ResultSet, il existe une méthode setxxx pour plusieurs types de données. Le premier argument correspond au numéro du paramètre que nous devons définir suivant son emplacement dans la requête paramétrée. La position 1 représente le premier?. Le second argument est la valeur que nous désirons affecter au paramètre. Si vous utilisez une requête préparée que vous avez déjà exécutée, et que cette requête possède plusieurs paramètres, tous ces paramètres restent inchangés tant qu'ils ne sont pas modifiés par une méthode setxxx. Cela signifie que vous avez uniquement besoin d'appeler la méthode setxxx pour les paramètres qui doivent être modifiés d'une requête à l'autre. Exécuter la requête Une fois que tous les paramètres ont été définis, vous pouvez exécuter la requête grâce à la méthode executequery qui cette fois-ci n'a pas besoin d'arguments puisque la requête a déjà été mis en oeuvre par la méthode preparestatement. PreparedStatement instruction = connexion.preparestatement("select * FROM personne WHERE nom =?"); //... Recherche de renseignement sur 'LAGAFE' instruction.setstring(1, "LAGAFE"); ResultSet résultat = instruction.executequery(); Exploitation des résultats Une fois que nous avons un objet de type ResultSet, nous pouvons procéder comme à l'accoutumée, c'est-à-dire, naviguer sur l'ensemble des renseignements disponibles et afficher l'ensemble des résultats. Voici d'ailleurs le programme en entier avec une recherche successive avec une proposition de deux noms différents : package testbasedonnées; public class Principale {

11 PreparedStatement instruction = connexion.preparestatement("select * FROM personne WHERE nom =?"); //... Recherche de renseignement sur 'LAGAFE' instruction.setstring(1, "LAGAFE"); ResultSet résultat = instruction.executequery(); while (résultat.next()) { System.out.println(" "); System.out.println("Nom : "+ résultat.getstring("nom")); System.out.println("Prénom : "+ résultat.getstring("prenom")); System.out.println("Civilité : "+ résultat.getstring("civilite")); System.out.println("Age : "+ résultat.getint("age")); //... Recherche de renseignement sur 'GUILLEMET' instruction.setstring(1, "GUILLEMET"); résultat = instruction.executequery(); while (résultat.next()) { System.out.println(" "); System.out.println("Nom : "+ résultat.getstring("nom")); System.out.println("Prénom : "+ résultat.getstring("prenom")); System.out.println("Civilité : "+ résultat.getstring("civilite")); System.out.println("Age : "+ résultat.getint("age")); catch (ClassNotFoundException ex) { System.err.println("Erreur Driver"); catch (SQLException ex) { System.err.println("Erreur Localisation BD"); Stockage d'objets sérialisés dans la base de données grâce au type BLOB En programation Java, il est très fréquent de manipuler des données représentées par des objets. Il peut alors être tentant de stocker l'ensemble de l'objet en une seule fois plutôt que de sauvegarder chacun des attributs en particulier, ce qui peut être fastidieux. Les bases de données sont maintenant capable de manipuler des données directement en format binaire, c'est-à-dire sans connaître spécialement le format (ou la représentation) intrinsèque. Le type BLOB prévu par les bases de données représente un bloc de données de taille variable permettant de stocker des données binaires (images, données brutes,...). Nous pouvons justement nous servir de ce type BLOB pour stocker des objets, la représentation binaire de ces objets dans la base de données nous importe peu. En fait, en java, le stockage ou la restitution des données binaires dans la base se fait au travers d'un flux de type OutputStream ou InputStream, c'est-à-dire sous la forme d'une suite d'octets. Il est ensuite possible d'utiliser un flux de plus haut niveau, pour gérer les types primitives (DataOutputStream, DataInputStream)), les chaînes de caractères (PrintWriter, BufferedReader) ou les objets (ObjectOutputStream, ObjectInputStream). Les premiers types (primitifs et chaînes de caractères) sont déjà prévus par les bases de données et ne nécessitent donc pas d'utiliser le système plus complexe des flux Java. Par contre, les derniers types de flux (ObjectOutputStream, ObjectInputStream) vont nous servir pour stocker des objets, la seule restriction étant alors de mettre en oeuvre des objets sérialisés comme nous l'avons déjà appris lors de l'étude spécifique des flux. Mise en oeuvre de la table messagerie comportant le champ personne de type BLOB Pour illustrer ces propos, nous allons créer une nouvelle table "messagerie" dans la base de données "gestion". Objet sérialisé de type Personne Cette table comporte 3 champs, dont l'un d'eux - personne - est du type BLOB. Ce champ représente un objet sérialisé de type Personne dont voici l'implémentation : import java.io.serializable; /* Fichier : Personne.java * Projet : TestBlob * Créé le 29 juin 2005 * Par Emmanuel REMY * Objet sérialisé à stocker dans la table public class Personne implements Serializable { private String nom; private String prénom; private int age; nom prenom age public Personne(String nom, String prénom, int age) { this.nom = nom; this.prénom = prénom; this.age = age; Renvoie age. public int getage() { return age; Renvoie nom.

12 public String getnom() { return nom; Renvoie prenom. public String getprénom() { return prénom; Stockage d'un objet sérialisé dans la base de données Nous allons maintenant stocker un objet de type Personne dans la table messagerie qui se situe dans la base de données gestion : /* Fichier : BaseDeDonnées.java * Projet : TestBlob * Créé le 29 juin 2005 * Par Emmanuel REMY import java.io.*; * Test sur une base données avec stockage d'objets sérialisés public class BaseDeDonnées { //Création de l'objet et stockage dans la base de données Personne personne = new Personne("REMY", "Emmanuel", 45); String sql = "INSERT INTO messagerie (personne, message) VALUES (?,?)"; PreparedStatement statement = connexion.preparestatement(sql); //insertion de l'objet statement.setobject(1, personne); statement.setstring(2, "Bienvenue à tous"); statement.executeupdate(); catch (ClassNotFoundException e) { System.err.println("Le driver n'a pas été chargé"); catch (SQLException e) { System.err.println("La requête n'a pas aboutie"); L'enregistrement d'un objet dans la base de données ne pose aucun problème particulier, il suffit de faire appel à la méthode setobject au même titre que la méthode setstring par exemple. Par contre le stockage dans la base de données s'effectue sous forme brut, c'est-à-dire sous forme d'une suite d'octets. Restitution d'un objet sérialisé à partir de la base de données Nous allons maintenant récupérer les valeurs que nous venons de stocker dans la base de données : /* Fichier : BaseDeDonnées.java * Projet : TestBlob * Créé le 29 juin 2005 * Par Emmanuel REMY import java.io.*; * Test sur une base données avec stockage d'objets sérialisés public class BaseDeDonnées { // Récupération de l'objet stocké dans la base de données Statement instruction = connexion.createstatement(); ResultSet résultat = instruction.executequery("select * FROM messagerie"); résultat.next(); InputStream stream = résultat.getblob("personne").getbinarystream(); ObjectInputStream objet = new ObjectInputStream(stream); Personne personne = (Personne) objet.readobject(); System.out.println("Nom : "+ personne.getnom()); System.out.println("Prénom : "+ personne.getprénom()); System.out.println("Age : "+ personne.getage()); System.out.println("Message : "+ résultat.getstring("message")); catch (ClassNotFoundException e) { System.err.println("Le driver n'a pas été chargé"); catch (SQLException e) { System.err.println("La requête n'a pas aboutie"); catch (IOException e) {

13 System.err.println("Problème de flux"); Il semblerait logique d'utiliser la méthode getobject comme nous avons utilisé la méthode setobject. Toutefois, il ne faut pas oublier que le stockage dans la base de données de ce champ personne est tout simplement du stockage binaire, c'est-à-dire une suite d'octets, bref sans formattage particulier. Il faut pouvoir retrouver la structure de l'objet. Il est donc nécessaire de passer par l'architecture des flux. Dans un premier temps, nous faisons appel à la méthote getblob qui récupère l'ensemble des informations binaire que nous formattons ensuite sous la forme d'une suite d'octets grâce à la méthode getbinarystream. Pour le reste, nous connaissons toute la procédure, il suffit de créer un flux d'objet et de transtyper l'objet récupéré vers un objet de type Personne. Langage SQL Principaux types de données Chaque type SQL a son équivalent en tant que constante numérique dans la classe java.sql.types. Tous les types SQL déclarés dans la classe java.sql.types ne sont pas forcément pris en charge par toutes les bases de données. Type SQL Description Type Java Constante java.sql.types INTEGER Entier signé int Types.INTEGER FLOAT Nombre à virgule flottante float Types.FLOAT DOUBLE Nombre à virgule flottante en double précision double Types.DOUBLE DECIMAL ( n, d ) Nombre décimal de n chiffres et de d décimales java.math.bigdecimal Types.DECIMAL CHAR ( n ) Chaîne de caractères de n caractères java.lang.string Types.CHAR VARCHAR ( n ) Chaîne de caractères de longueur variable de n caractères au maximum java.lang.string Types.VARCHAR DATE Date java.sql.date Types.DATE TIME Heure java.sql.time Types.TIME TIMESTAMP Date et heure java.sql.timestamp Types.TIMESTAMP BLOB Bloc de données de taille variable permettant de stocker des données binaires (images, données brutes...) java.sql.blob byte[ ] Types.BLOB Mette à jour les tables et les index 1. Créer une table :... CREATE TABLE TableTest (champ1 type1,..., champn typen) Crée la table TableTest dont la liste des champs suivis de leur type est donnée entre parenthèses. 2. Créer un index :... CREATE INDEX IndexTest ON TableTest (champx, champy) Crée l'index IndexTest sur les champs champx et champy de la table TableTest. 3. Supprimer une table :... DROP TABLE TableTest Supprime la table TableTest. 4. Supprimer un index :... CREATE INDEX IndexTest ON TableTest Supprime l'index IndexTest de la table TableTest. Modifier et rechercher les enregistrements d'une table 1. Insérer un enregistrement :... INSERT INTO TableTest (champ1,..., champn) VALUES (valeur1,..., valeurn) Insère un nouvel enregistrement dans la table TableTest avec les valeurs correspondantes aux champs. 2. Modifier un enregistrement :... UPDATE TableTest SET champ1=valeur1, champ2=valeur2,... WHERE champn=valeurn Modifie dans la table TableTest certains champs du ou des enregistrements vérifiant la condition champn=valeurn. 3. Supprimer un enregistrement :... DELETE FROM TableTest WHERE champn=valeurn Supprime de la table TableTest le ou les enregistrements vérifiant la condition champn=valeurn. 4. Rechercher dans une table :... SELECT champ1, champ2,... FROM TableTest Recherche et sélectionne les champs demandés dans tous les enregistrements de la table TableTest et les renvoie, ou renvoie tous les champs si * remplace la liste des champs.... SELECT champ1, champ2,... FROM TableTest WHERE champn=valeurn Recherche et sélectionne dans la table TableTest le ou les enregistrements vérifiant la condition champn=valeurn.... SELECT champ1, champ2,... FROM TableTest WHERE champn=valeurn ORDER BY champn Recherche et sélectionne dans la table TableTest le ou les enregistrements vérifiant la condition champn=valeurn et triés dans l'ordre ascendant des valeurs du champn.

Cours Bases de données 2ème année IUT

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours 6 : JDBC : ou comment lier ORACLE avec Java 1ère partie Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Introduction 2 les étapes de la connexion

Plus en détail

Introduction à JDBC. Accès aux bases de données en Java

Introduction à JDBC. Accès aux bases de données en Java Introduction à JDBC Accès aux bases de données en Java Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Eric.Cariou@univ-pau.fr 1 Introduction JDBC : Java Data Base Connectivity

Plus en détail

Java DataBaseConnectivity

Java DataBaseConnectivity Java DataBaseConnectivity JDBC JDBC est une API Java (ensemble de classes et d interfaces défini par SUN et les acteurs du domaine des SGBD) permettant d accéder aux bases de données à l aide du langage

Plus en détail

8. Java et les bases de données. Olivier Curé - UMLV [page 206 ]

8. Java et les bases de données. Olivier Curé - UMLV [page 206 ] 8. Java et les bases de données Olivier Curé - UMLV [page 206 ] Java et les BD Plusieurs manières d'écrire du code Java accédant à une BD: Statement Level Interface (SLI) Solutions : SQLJ (SQL92) Call

Plus en détail

2. L'envoi de requêtes SQL au SGBD, à partir du programme java: création de tables, sélection de données,

2. L'envoi de requêtes SQL au SGBD, à partir du programme java: création de tables, sélection de données, Introduction à JDBC Introduction JDBC, Java Data Base Connectivity est un ensemble de classes (API Application Programming Interface --JAVA) permettant de se connecter à une base de données relationnelle

Plus en détail

Programmation orientée objet en langage JAVA

Programmation orientée objet en langage JAVA Programmation orientée objet en langage JAVA Connexion à une base de données avec JDBC Claude Duvallet Université du Havre UFR Sciences et Techniques 25 rue Philippe Lebon - BP 540 76058 LE HAVRE CEDEX

Plus en détail

JDBC. Daniel Tschirhart : Programmation Java V1.35 1.1

JDBC. Daniel Tschirhart : Programmation Java V1.35 1.1 JDBC Daniel Tschirhart : Programmation Java V1.35 1.1 JDBC JDBC est l'acronyme de Java DataBase Connectivity et désigne une API définie par Sun pour permettre un accès aux bases de données avec Java Accès

Plus en détail

Connexion aux bases de données. Rappels API JDBC Pilotes JDBC Connexion ResultSet requêtes interprétées requêtes préparées

Connexion aux bases de données. Rappels API JDBC Pilotes JDBC Connexion ResultSet requêtes interprétées requêtes préparées JDBC 1 Connexion aux bases de données Rappels API JDBC Pilotes JDBC Connexion ResultSet requêtes interprétées requêtes préparées 2 Modélisation des données Création d'un schéma entités/associations Entités:

Plus en détail

JDBC (Java DataBase Connectivity)

JDBC (Java DataBase Connectivity) JDBC (Java DataBase Connectivity) M. Belguidoum Université Mentouri de Constantine Département Informatique M. Belguidoum (UMC) Programmation réseau 1 / 52 Plan 1 Introduction 2 Le paquetage java.sql 3

Plus en détail

Programmation orientée objet en langage JAVA

Programmation orientée objet en langage JAVA Connexion à une base de données avec JDBC Programmation orientée objet en langage JAVA Connexion à une base de données avec JDBC Claude Duvallet Université du Havre UFR Sciences et Techniques 25 rue Philippe

Plus en détail

Interface SQL-Langages hôtes. Interface SQL-Langages hôtes. Java DataBases Connectivity JDBC Hala Skaf-Molli Skaf@loria.fr www.loria.

Interface SQL-Langages hôtes. Interface SQL-Langages hôtes. Java DataBases Connectivity JDBC Hala Skaf-Molli Skaf@loria.fr www.loria. Interface SQL-Langages hôtes Interface SQL-Langages hôtes Java DataBases Connectivity JDBC Hala Skaf-Molli Skaf@loria.fr www.loria.fr/~skaf Pourquoi? Comment? Interface SQL-Langages hôtes Pourquoi? SQL

Plus en détail

Travaux Pratiques : Connexion et accès à la Base De Données

Travaux Pratiques : Connexion et accès à la Base De Données MODULE : Intégration des données Professeur : Mr Tallard Travaux Pratiques : Connexion et accès à la Base De Données Kamissi MOHAMED Sommaire 1. Présentation de l énoncé... 3 2. Connexion à la base de

Plus en détail

625 Programmation JDBC LES PRINCIPALES CLASSES ET LEUR EMPLOI INTRODUCTION ARCHITECTURES. Connection. Statement instruction

625 Programmation JDBC LES PRINCIPALES CLASSES ET LEUR EMPLOI INTRODUCTION ARCHITECTURES. Connection. Statement instruction 625 Programmation INTRODUCTION JDBC API (Framework) permettant d'accéder virtuellement à toute source de données tabulaire ; respecte la philosophie de la plate-forme Java: Write once, run everywhere ;

Plus en détail

625 Programmation JDBC INTRODUCTION ARCHITECTURES

625 Programmation JDBC INTRODUCTION ARCHITECTURES 625 Programmation JDBC INTRODUCTION API (Framework) permettant d'accéder virtuellement à toute source de données tabulaire ; respecte la philosophie de la plate-forme Java: Write once, run everywhere ;

Plus en détail

Présentation Etapes dans le traitement d une requête d accès aux. Exemple. Contact: nadiri@najasoft.com (Décembre 2005)

Présentation Etapes dans le traitement d une requête d accès aux. Exemple. Contact: nadiri@najasoft.com (Décembre 2005) JDBC API Présentation Etapes dans le traitement d une requête d accès aux données JDBC. Exemple Contact: nadiri@najasoft.com (Décembre 2005) Présentation L API JDBC est composée de deux Packages java.sql

Plus en détail

Java et Objet. Amélie Lambert 2014-2015. Amélie Lambert 2014-2015 1 / 58

Java et Objet. Amélie Lambert 2014-2015. Amélie Lambert 2014-2015 1 / 58 Java et Objet Amélie Lambert 2014-2015 Amélie Lambert 2014-2015 1 / 58 Chapitre 11 Java Data Base Connectivity (JDBC) Amélie Lambert 2014-2015 2 / 58 Plan du cours Introduction aux base de données Introduction

Plus en détail

TP Programmation Java / JDBC / Oracle

TP Programmation Java / JDBC / Oracle TP Programmation Java / JDBC / Oracle 1. Connectivité avec une base de données Oracle au travers de l interface JDBC L interface de programmation (API) JDBC (Java DataBase Connectivity) est une librairie

Plus en détail

Architectures n-tiers et applications Web Outils Java et applications Web Servlets État d un servlet Les JSP Accès aux BD avec servlets Conception

Architectures n-tiers et applications Web Outils Java et applications Web Servlets État d un servlet Les JSP Accès aux BD avec servlets Conception Plan 231 Architectures n-tiers et applications Web Outils Java et applications Web Servlets État d un servlet Les JSP Accès aux BD avec servlets Conception JDBC - Rappels 232 JDBC: API qui permet de stocker,

Plus en détail

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives : ntroduction 1/28 2/28 Anne-Cécile Caron Licence MAGE - Bases de Données 2013-2014 Application base de données Pour le développeur : Quel est l environnement? type de client (mode client serveur, intranet,...)

Plus en détail

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige.

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige. : JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java Michel Bonjour http://cuiwww.unige.ch/~bonjour Plan JDBC: API bas niveau pour l accès aux BD (SQL) - Introduction - JDBC et : Java, ODBC, SQL

Plus en détail

Principes d'utilisation des systèmes de gestion de bases de données

Principes d'utilisation des systèmes de gestion de bases de données Principes d'utilisation des systèmes de gestion de bases de données JDBC L3 Informatique Emmanuel Waller, LRI, Orsay Université Paris Sud le mode programme JDBC JDBC : qu'est ce que c'est? Avantages? devant

Plus en détail

Cours Bases de données 2ème année IUT

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours 8 : JDBC : ou comment lier ORACLE avec Java 3ème partie Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Appel aux procédures et aux fonctions stockées

Plus en détail

Java EE Approfondi - Cours 2. Cours de 2 e année ingénieur Spécialisation «Génie Informatique»

Java EE Approfondi - Cours 2. Cours de 2 e année ingénieur Spécialisation «Génie Informatique» Java EE Approfondi - Cours 2 Cours de 2 e année ingénieur Spécialisation «Génie Informatique» Présentation Lier l'orienté objet et la base de données relationnelle peut être lourd et consommateur en temps.

Plus en détail

Accès aux bases de données

Accès aux bases de données 13 Accès aux bases de données Les bases de données fournissent un mécanisme de stockage persistant pour les données d application et dans bien des cas, elles sont essentielles au fonctionnement des applications.

Plus en détail

Cours 3. Contenu du cours : " Accès à une base de données. " Exécution de requêtes et lectures de résultats. " Les méta-données

Cours 3. Contenu du cours :  Accès à une base de données.  Exécution de requêtes et lectures de résultats.  Les méta-données Cours 3 Contenu du cours : " Accès à une base de données " Exécution de requêtes et lectures de résultats " Les méta-données 2 L'API JDBC est utilisée pour intéragir avec une base de données. Privilèges

Plus en détail

Interface Java Oracle : JDBC

Interface Java Oracle : JDBC Interface Java Oracle : JDBC Christine Bonnet Sommaire Démarche globale JDBC --- 6 Accès s en consultation --- 9 Accès s en modification --- 13 Ordres dynamiques --- 19 Procédures stockées --- 24 I-2 Christine

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Java Licence professionnelle CISI 2009-2010

Java Licence professionnelle CISI 2009-2010 Java Licence professionnelle CISI 2009-2010 Cours 10 : Type générique (c) http://manu.e3b.org/java/tutoriels/avance/generique.pdf 1 Introduction La programmation générique - nouveauté la plus significative

Plus en détail

Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer. L3 Pro Informatique 2010-2011

Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer. L3 Pro Informatique 2010-2011 1 / 32 Développement Web - JDBC Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer L3 Pro Informatique 2010-2011 2 / 32 Plan Plan 1 Préambule 2 Utilisation de

Plus en détail

Programmation d application Bases de données avec Java

Programmation d application Bases de données avec Java Plan du document Programmation d application Bases de données avec Java INT Problématique slide 3 Correspondance diagramme de classe slide 4 UML vers schéma relationnel Programmation BD avec JDBC slide

Plus en détail

Compétence (niveau moyen) Java J2EE - 2014

Compétence (niveau moyen) Java J2EE - 2014 Compétence (niveau moyen) Java J2EE - 2014 «Mars-Mai 2014. Réf : JAVA J2EE Version 1 Page 1 sur 23 Sommaire CONTEXTE DE LA REMISE A NIVEAU JAVA J2EE EN AUTOFORMATION... 3 1. UTILISATION DE ECLIPSE KEPLER

Plus en détail

CREATION WEB DYNAMIQUE

CREATION WEB DYNAMIQUE CREATION WEB DYNAMIQUE IV ) MySQL IV-1 ) Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requêtes vers les bases de données relationnelles. Le serveur de

Plus en détail

JDBC et objet-relationnel

JDBC et objet-relationnel Types de données de SQL3 JDBC et objet-relationnel Université de Nice - Sophia Antipolis Version 1.6.4 5/11/11 Richard Grin JDBC supporte les types suivants de SQL3 qui sont des ouvertures vers le relationnelobjet

Plus en détail

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5 1. Qu'est-ce que SQL?... 2 2. La maintenance des bases de données... 2 2.1 La commande CREATE TABLE... 3 2.2 La commande ALTER TABLE... 4 2.3 La commande CREATE INDEX... 4 3. Les manipulations des bases

Plus en détail

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

Java Avancé - Cours 1

Java Avancé - Cours 1 Java avancé - cours 1 1/8 Java Avancé - Cours 1 Plan 1 Recevoir et émettre des données simples 1 1.1 Comment récupérer une page Web.......................................... 1 1.2 Socket : l objet qui

Plus en détail

Base de donnée relationnelle. Exemple de table: Film. Exemple de table: Acteur. Exemple de table: Role. Contenu de la table Role

Base de donnée relationnelle. Exemple de table: Film. Exemple de table: Acteur. Exemple de table: Role. Contenu de la table Role IFT7 Programmation Serveur Web avec PHP Introduction à MySQL Base de donnée relationnelle Une base de données relationnelle est composée de plusieurs tables possédant des relations logiques (théorie des

Plus en détail

APPLICATIONS JAVA. JDBC (Java DataBase Connectivity) JSP SQL (rappel) Architecture Java-JDBC-SGBD. JDBC et JSP IvMad - 2012 2

APPLICATIONS JAVA. JDBC (Java DataBase Connectivity) JSP SQL (rappel) Architecture Java-JDBC-SGBD. JDBC et JSP IvMad - 2012 2 APPLICATIONS JAVA JDBC (Java DataBase Connectivity) JSP SQL (rappel) JDBC et JSP IvMad - 2012 2 Architecture Java-JDBC-SGBD JDBC et JSP IvMad - 2012 3 Architecture Java-JDBC-SGBD Les composants de la connexion

Plus en détail

Tp2 Emacs Développement Web

Tp2 Emacs Développement Web Tp2 Emacs Développement Web Les indications ci-dessous donnent les grandes lignes du développement. 1/ Evenement Ajax Jquery: Le code javascript jquery suivant permet d afficher un message dans un span

Plus en détail

Généralités sur le Langage Java et éléments syntaxiques.

Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...

Plus en détail

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1 La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1 Plan 1. Généralités sur la persistance des données dans les applications 2. La connection

Plus en détail

Atelier Web Les langages du Web Le MySQL Module 1 - Les bases

Atelier Web Les langages du Web Le MySQL Module 1 - Les bases Atelier Web Les langages du Web Le MySQL Module 1 - Les bases Définition MySQL = SGBD = Système de Gestion de Base de Données Le rôle du MySQL est de vous aider à enregistrer les données de manière organisée

Plus en détail

PHP & BD. PHP & Bases de données. Logiciels & matériels utilisés. Bases de données et Web

PHP & BD. PHP & Bases de données. Logiciels & matériels utilisés. Bases de données et Web PHP & Bases de données La quantité de données utilisée par certains sites web nécessite l'utilisation d'une base de données Il faut donc disposer d'un SGBD (mysql, postgresql, oracle, ) installé sur un

Plus en détail

OpenPaaS Le réseau social d'entreprise

OpenPaaS Le réseau social d'entreprise OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3

Plus en détail

Système de contrôle d accès

Système de contrôle d accès Système de contrôle d accès Installation du système Les éléments à mettre en place. Pour mettre en place l environnement de travail de la badgeuse, il faut suivre plusieurs étapes : Sur l ordinateur devant

Plus en détail

Compte-rendu de projet de Système de gestion de base de données

Compte-rendu de projet de Système de gestion de base de données Compte-rendu de projet de Système de gestion de base de données Création et utilisation d'un index de jointure LAMBERT VELLER Sylvain M1 STIC Université de Bourgogne 2010-2011 Reponsable : Mr Thierry Grison

Plus en détail

T.P. 3 Base de données, JDBC et Mapping Objet-relationnel

T.P. 3 Base de données, JDBC et Mapping Objet-relationnel EPITA Ala Eddine BEN SALEM App-Ing2 J2EE T.P. 3 Base de données, JDBC et Mapping Objet-relationnel L'objectif de ce TP est de vous faire pratiquer l'api JDBC qui permet d'accéder à une base de données

Plus en détail

FONCTIONS DE TRAITEMENT} COUNT

FONCTIONS DE TRAITEMENT} COUNT Nom Prénom Promotion Date Buhl Damien Année 1 Groupe 2 21 Janvier 2007 CER Prosit n 22 Mots-Clés : - Requête/Langage SQL Le langage SQL (Structured Query Language) est un langage de requêtes, il permet

Plus en détail

CERSIG. Pascal Barbier MAPINFO V6.5. Volume 3. Gestion de tables DBMS par lien ODBC

CERSIG. Pascal Barbier MAPINFO V6.5. Volume 3. Gestion de tables DBMS par lien ODBC CERSIG Pascal Barbier MAPINFO V6.5 Volume 3 Gestion de tables DBMS par lien ODBC Version 1.0 du 9 août 2002 IGN- ENSG-CERSIG Cours Map Info V6.5 livret 3 Version du Cours V1.0 Auteur Pascal Barbier - Pascal.Barbier@ensg.ign.fr

Plus en détail

UTILISER LE SERVEUR MYSQL...

UTILISER LE SERVEUR MYSQL... MySQL (pour Windows 9x) UTILISER LE SERVEUR MYSQL... 2 LANCER LE SERVEUR MYSQL... 2 ARRETER LE SERVEUR MYSQL... 3 TRAVAIL AVEC LA CONSOLE MYSQL... 3 CREATION / SUPPRESSION D'UN BASE... 3 UTILISER UN BASE...

Plus en détail

SQL SERVER 2008 Le 20/10/2010

SQL SERVER 2008 Le 20/10/2010 Définitions SQL SERVER 2008 Le 20/10/2010 Une base de données est un objet particulièrement difficile à définir puisqu il est abordé en pratique selon différents points de vue : Pour un administrateur,

Plus en détail

S. Laporte C# mode console DAIGL TS1

S. Laporte C# mode console DAIGL TS1 Bases du langage C# I. C# en mode console (mode texte) Avantages par rapport au mode graphique (Application Windows): - C'est un mode plus proche de l'approche algorithmique (pas de notions de composants,

Plus en détail

Procédures Stockées WAVESOFT... 12 ws_sp_getidtable... 12. Exemple :... 12. ws_sp_getnextsouche... 12. Exemple :... 12

Procédures Stockées WAVESOFT... 12 ws_sp_getidtable... 12. Exemple :... 12. ws_sp_getnextsouche... 12. Exemple :... 12 Table des matières Les Triggers... 2 Syntaxe... 2 Explications... 2 Les évènements déclencheurs des triggers... 3 Les modes de comportements des triggers... 4 Les pseudo tables... 5 Exemple... 6 Les procédures

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

Jusqu à 14 h : Open Questions! On vous explique ce que vous n avez pas compris lors de la première formation.

Jusqu à 14 h : Open Questions! On vous explique ce que vous n avez pas compris lors de la première formation. Bienvenue! Jusqu à 14 h : Open Questions! On vous explique ce que vous n avez pas compris lors de la première formation. Téléchargez les logiciels nécessaires pour cette formation : http ://formation-web.via.ecp.fr

Plus en détail

JDBC. Java Database Connectivity (JDBC) JDBC JDBC. Java Database Connectivity (JDBC) Lionel Seinturier. Université Pierre & Marie Curie

JDBC. Java Database Connectivity (JDBC) JDBC JDBC. Java Database Connectivity (JDBC) Lionel Seinturier. Université Pierre & Marie Curie Java Database Connectivity () Lionel Seinturier Université Pierre & Marie Curie Lionel.Seinturier@lip6.fr 10/9/04 1 Lionel Seinturier Java Database Connectivity () Permet à un programme Java d'interagir

Plus en détail

SQL pour. Oracle 10g. Razvan Bizoï. Tsoft, Groupe Eyrolles, 2006, ISBN : 2-212-12055-9, ISBN 13 : 978-2-212-12055-4

SQL pour. Oracle 10g. Razvan Bizoï. Tsoft, Groupe Eyrolles, 2006, ISBN : 2-212-12055-9, ISBN 13 : 978-2-212-12055-4 SQL pour Oracle 10g Razvan Bizoï Tsoft, Groupe Eyrolles, 2006, ISBN : 2-212-12055-9, ISBN 13 : 978-2-212-12055-4 Ce guide de formation a pour but de vous permettre d'acquérir une bonne connaissance du

Plus en détail

Transaction. 1:débiter(1000) 2:créditer(1000)

Transaction. 1:débiter(1000) 2:créditer(1000) Transaction Il n'est pas rare qu'une opération se divise en plusieurs autres opérations élémentaires sur la base de données. Dans ce cas, l''état de la base de données avant l'opération est maintenue cohérent,

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

LES ACCES ODBC AVEC LE SYSTEME SAS

LES ACCES ODBC AVEC LE SYSTEME SAS LES ACCES ODBC AVEC LE SYSTEME SAS I. Présentation II. SAS/ACCESS to ODBC III. Driver ODBC SAS IV. Driver ODBC SAS Universel V. Version 8 VI. Références I. Présentation Introduction ODBC, qui signifie

Plus en détail

Cours 1. Contenu du cours : " Premières applications. " Compilation, Exécution, Chemin. " Affichage et saisie. " Types de données. " Flux de contrôle

Cours 1. Contenu du cours :  Premières applications.  Compilation, Exécution, Chemin.  Affichage et saisie.  Types de données.  Flux de contrôle Cours 1 1 Contenu du cours : " Premières applications " Compilation, Exécution, Chemin " Affichage et saisie " Types de données " Flux de contrôle " Applets " Arrays " OO de base Edition Le fichier texte

Plus en détail

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES Dossier G11 - Interroger une base de données La base de données Facturation contient tout un ensemble d'informations concernant la facturation de la SAFPB (société anonyme de fabrication de produits de

Plus en détail

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC Sommaire 1. Objectifs et intérêts... 2 2. Intégrer le driver SQL Server dans SJSAS 9... 2 2.1. Télécharger

Plus en détail

Application web de gestion de comptes en banques

Application web de gestion de comptes en banques Application web de gestion de comptes en banques Objectif Réaliser une application Web permettant à un client de gérer ses comptes en banque Diagramme de cas d'utilisation 1 Les cas d'utilisation Connexion

Plus en détail

LES FICHIERS. 1-169169 JAVA Christine BONNET

LES FICHIERS. 1-169169 JAVA Christine BONNET 12 LES FICHIERS 1-169169 JAVA Christine BONNET LES FLOTS Package java.io La gestion des E/S s'effectue à l'aide des flots. Un stream (flot) représente un canal de communication ( écran, fichier, pipe,

Plus en détail

Chap. 5 : Langage SQL (Structured Query Language) Pr. : Mohamed BASLAM Contact : baslam.med@gmail.com Niveau : S4 BCG Année : 2014/2015 1

Chap. 5 : Langage SQL (Structured Query Language) Pr. : Mohamed BASLAM Contact : baslam.med@gmail.com Niveau : S4 BCG Année : 2014/2015 1 Chap. 5 : Langage SQL (Structured Query Language) Pr. : Mohamed BASLAM Contact : baslam.med@gmail.com Niveau : S4 BCG Année : 2014/2015 1 Plan Généralités Langage de Définition des (LDD) Langage de Manipulation

Plus en détail

Cours 1 : Introduction Générale + Objet I

Cours 1 : Introduction Générale + Objet I Organisation du cours Équipe pédagogique DUT Informatique S3 - Programmation Java Jean-Claude MARTIN MARTIN@LIMSI.FR Cours 1 : Introduction Générale + Objet I Jean-Claude MARTIN (Responsable, Cours, TD

Plus en détail

Enregistrement de données, partie 1 (Storage)

Enregistrement de données, partie 1 (Storage) Enregistrement de données, partie 1 (Storage) CodenameOne propose 4 manières différentes pour sauvegarder des données. La plus simple, la plus portable et la plus conseillée pour la majorité des cas est

Plus en détail

RMI le langage Java XII-1 JMF

RMI le langage Java XII-1 JMF Remote Method Invocation (RMI) XII-1 Introduction RMI est un ensemble de classes permettant de manipuler des objets sur des machines distantes (objets distants) de manière similaire aux objets sur la machine

Plus en détail

GRAILS L'ARCHITECTURE GRAILS

GRAILS L'ARCHITECTURE GRAILS GRAILS L'ARCHITECTURE GRAILS Grails est un serveur d'application web basé sur le langage Groovy, et le framework Spring. Il est édité par la société : SpringSource. Une application Grails se décompose

Plus en détail

1 Partie A : administration d une base de donnée à travers PhpMyAdmin

1 Partie A : administration d une base de donnée à travers PhpMyAdmin Ce TP se compose en 2 sections : une section de prise en main (sur ordinateur) et une section d exercice (sur papier) concernant l algèbre relationnelle. 1 Partie A : administration d une base de donnée

Plus en détail

MySQL 5 (versions 5.1 à 5.6) Guide de référence du développeur (Nouvelle édition)

MySQL 5 (versions 5.1 à 5.6) Guide de référence du développeur (Nouvelle édition) Avant-propos 1. Les objectifs de ce livre 13 2. Les principaux sujets qu'aborde ce livre 13 3. À qui s adresse ce livre? 14 4. Les pré-requis 14 Introduction à MySQL 1. Introduction aux bases de données

Plus en détail

Cours informatique 2014-2015 / 01. Contenu : Etapes Drivers Statements ResultSet Type de données

Cours informatique 2014-2015 / 01. Contenu : Etapes Drivers Statements ResultSet Type de données Curs infrmatique 2014-2015 / 01 * Java DataBase Cnnectivity Cntenu : Etapes Drivers Statements ResultSet Type de dnnées Estimatin temps : Curs : 2 x 45 minutes TP : 120 minutes HEG Genève http://www.hesge.ch/heg/

Plus en détail

Mémento Site Dynamique / PHP

Mémento Site Dynamique / PHP Mémento Site Dynamique / PHP Pour faire fonctionner site statique : Navigateur Éditeur de texte Apache/PHP/MySQL (qu'on peut retrouver dans WampServer (uniquement Windows)) Inclure les portions de page

Plus en détail

Le client/serveur repose sur une communication d égal à égal entre les applications.

Le client/serveur repose sur une communication d égal à égal entre les applications. Table des matières LES PRINCIPES DE BASE... 1 Présentation distribuée-revamping...2 Présentation distante...3 Traitements distribués...3 données distantes-rd...4 données distribuées-rda distribué...4 L'ARCHITECTURE

Plus en détail

Chapitre 4 La base de données

Chapitre 4 La base de données Chapitre 4 La base de données La Base de données INTRODUCTION 4 La Base de données INTRODUCTION Vectorworks permet de lier les objets du dessin à des formats de base de données (BDD), c'est-à-dire d'associer

Plus en détail

Accès à une base de données MySql via Lazarus

Accès à une base de données MySql via Lazarus TP Mysql avec Lazarus - page 1 Accès à une base de données MySql via Lazarus Première partie : exécution de requêtes Corrigé Auteur: E. Thirion - dernière mise à jour : 10/07/2015 Le corrigé de ce TP téléchargement.

Plus en détail

Plan. Environnement Client/Serveur. Cours 6 Rappels Java (suite) Appel de méthode à distance. Utilité. static

Plan. Environnement Client/Serveur. Cours 6 Rappels Java (suite) Appel de méthode à distance. Utilité. static Plan Environnement Client/Serveur Cours 6 Rappels Java (suite) Appel de méthode à distance kn@lri.fr http://www.lri.fr/~kn 1 Rappels sur les systèmes d'exploitations / Communication par mémoire partagée

Plus en détail

FileMaker 11. Guide ODBC et JDBC

FileMaker 11. Guide ODBC et JDBC FileMaker 11 Guide ODBC et JDBC 2004-2010 FileMaker, Inc. Tous droits réservés. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054, Etats-Unis FileMaker est une marque de FileMaker,

Plus en détail

I. MySQL : Serveur et SGBD

I. MySQL : Serveur et SGBD Le Système de Gestion de Base de Données MySQL I. MySQL : Serveur et SGBD Menu I. MySQL : Serveur et SGBG II. Création d'une base de données avec MySQL MySQL est un système de gestion et conception de

Plus en détail

JDBC le langage Java XVI-1 JMF

JDBC le langage Java XVI-1 JMF JDBC Java Database Connectivity XVI-1 JDBC JDBC est une API Java (ensemble de classes et d'interfaces défini par SUN et les acteurs du domaine des BD) permettant d'accéder aux bases de données à l'aide

Plus en détail

Eléments de syntaxe du langage Java

Eléments de syntaxe du langage Java c jan. 2014, v3.0 Java Eléments de syntaxe du langage Java Sébastien Jean Le but de ce document est de présenter es éléments de syntaxe du langage Java : les types primitifs, les opérateurs arithmétiques

Plus en détail

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE Le responsable de la société Itaste utilise une application installée sur son poste : elle est programmée en VBA sous Microsoft Access et pourvue d une

Plus en détail

Java et les bases de données relationnelles : JDBC

Java et les bases de données relationnelles : JDBC 1. Introduction 2. L API JDBC Java et les bases de données relationnelles : JDBC Bernard ESPINASSE Professeur à Aix-Marseille Université (AMU) Ecole Polytechnique Universitaire de Marseille Septembre 2015

Plus en détail

PHP 5. La base de données MySql. A. Belaïd 1

PHP 5. La base de données MySql. A. Belaïd 1 PHP 5 La base de données MySql A. Belaïd 1 Base de données C est quoi une base de données? Une base de données contient une ou plusieurs tables, chaque table ayant un ou plusieurs enregistrements Exemple

Plus en détail

La persistance des données avec SQLite. Jean-marc Farinone. JMF (Tous droits réservés) 1

La persistance des données avec SQLite. Jean-marc Farinone. JMF (Tous droits réservés) 1 La persistance des données avec SQLite Jean-marc Farinone JMF (Tous droits réservés) 1 Remarques sur SQLite La base de données FILENAME est stockée dans le smartphone sous /data/data/nom_package_appli/databases/filename

Plus en détail

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 SQL Sommaire : COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 COMMANDES DE MANIPULATION DE DONNEES... 2 COMMANDES DE CONTROLE TRANSACTIONNEL... 2 COMMANDES DE REQUETE DE DONNEES... 2 COMMANDES

Plus en détail

Vulnérabilités logicielles Injection SQL

Vulnérabilités logicielles Injection SQL MGR850 Hiver 2014 Vulnérabilités logicielles Injection SQL Hakima Ould-Slimane Chargée de cours École de technologie supérieure (ÉTS) Département de génie électrique 1 Plan SQL Injection SQL Injections

Plus en détail

11. MySQL. Cours Web. MySQL. 11. MySQL. 11. MySQL. Structured Query Language. Lionel Seinturier. Université Pierre & Marie Curie

11. MySQL. Cours Web. MySQL. 11. MySQL. 11. MySQL. Structured Query Language. Lionel Seinturier. Université Pierre & Marie Curie Cours Web Lionel Seinturier Université Pierre & Marie Curie Lionel.Seinturier@lip6.fr Structured Query Language Langage de manipulation des données stockées dans une base de données interrogation/insertion/modification/suppression

Plus en détail

Java et les bases de données

Java et les bases de données Michel Bonjour http://cuiwww.unige.ch/~bonjour CENTRE UNIVERSITAIRE D INFORMATIQUE UNIVERSITE DE GENEVE Plan Introduction JDBC: API SQL pour Java - JDBC, Java, ODBC, SQL - Architecture, interfaces, exemples

Plus en détail

Introduction au langage SQL

Introduction au langage SQL Introduction au langage SQL 1. Description SQL est un acronyme pour Structured Query Language qui a été conçu par IBM, et a succédé au langage SEQUEL. C est maintenant le langage le plus utilisé dans les

Plus en détail

Patrons de conceptions problème solution Design Patterns GoF

Patrons de conceptions problème solution Design Patterns GoF - Patrons de conceptions pour la programmation orientée objet - Chaque problème de programmation = déjà rencontré par d autres informaticiens - Une solution existe généralement parmi les Design Patterns

Plus en détail

Client SQL Server version 3

Client SQL Server version 3 Client SQL Server version 3 Présentation du programme Par Jean-Pierre LEON Mise à jour du 10/06/2014 Page 2 sur 21 Présentation du logiciel Ouvrir, analyser, consulter, modifier une base de données au

Plus en détail

FileMaker 12. Guide ODBC et JDBC

FileMaker 12. Guide ODBC et JDBC FileMaker 12 Guide ODBC et JDBC 2004-2012 FileMaker, Inc. Tous droits réservés. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker et Bento sont des marques commerciales de

Plus en détail

Cours Web n o 7 MySQL et PHP

Cours Web n o 7 MySQL et PHP Introduction aux bases de données Cours Web n o 7 MySQL et PHP Sandrine-Dominique Gouraud (gouraud@lri.fr) Pierre Senellart (pierre@senellart.com) Semaine du 7 novembre 2005 S.-D. Gouraud, P. Senellart

Plus en détail

Document d'aide phpmyadmin et MySQL

Document d'aide phpmyadmin et MySQL Document d'aide phpmyadmin et MySQL GPA775 Base de données École de Technologie Supérieure 23 juin 2009 Ce document sert de guide de base pour travailler avec l'interface phpmyadmin (interface par un navigateur

Plus en détail

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin Objectifs : Apprendre à l apprenant à lancer un serveur local «Apache» Apprendre à l'apprenant à lancer un serveur MySQL

Plus en détail

TP de SQL. Premiers pas. Nom : Contrôle qualité : Observations : BTS IRIS MySQL TP 01. Analyse Codage Validation

TP de SQL. Premiers pas. Nom : Contrôle qualité : Observations : BTS IRIS MySQL TP 01. Analyse Codage Validation Nom : TP de SQL Premiers pas Contrôle qualité : 3 Conception et Analyse Schéma de la base Normalisation (si vue en cours) Non-normalisation (si vue en cours) Analyse Codage Validation 4 - Vérifications

Plus en détail

Correction langage Java

Correction langage Java MINISTÈRE DE L ÉCOLOGIE, DU DÉVELOPPEMENT DURABLE, DES TRANSPORTS ET DU LOGEMENT EXAMEN PROFESSIONNEL DE VÉRIFICATION D APTIDUDE AUX FONCTIONS DE PROGRAMMEUR Session 2010 Correction langage Java Langage:

Plus en détail