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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 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

1/ Présentation de SQL Server :

1/ Présentation de SQL Server : Chapitre II I Vue d ensemble de Microsoft SQL Server Chapitre I : Vue d ensemble de Microsoft SQL Server Module: SQL server Semestre 3 Année: 2010/2011 Sommaire 1/ Présentation de SQL Server 2/ Architerture

Plus en détail

Le Langage De Description De Données(LDD)

Le Langage De Description De Données(LDD) Base de données Le Langage De Description De Données(LDD) Créer des tables Décrire les différents types de données utilisables pour les définitions de colonne Modifier la définition des tables Supprimer,

Plus en détail

L'application WinForm et le composant d'accès aux données

L'application WinForm et le composant d'accès aux données L'application WinForm et le composant d'accès aux données Vous disposez d'un squelette de l'application AntoineVersion0- ainsi que de la base de données à restaurer dans SqlServer Bd_Antoine.dat-. Travail

Plus en détail

1. Langage de programmation Java

1. Langage de programmation Java 1. Langage de programmation Java 1.1. Définitions Langage de 3e génération le plus utilisé actuellement Portabilité : exécutable sur tout types d'ordinateurs quel que soit le système d'exploitation (Windows,

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

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

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

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

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

Création et Gestion des tables

Création et Gestion des tables Création et Gestion des tables Version 1.0 Z Grégory CASANOVA 2 Sommaire 1 Introduction... 3 2 Pré-requis... 4 3 Les tables... 5 3.1 Les types de données... 5 3.1.1 Les types de données Sql Server... 5

Plus en détail

Bases de données Page 1 de 11. Bases de données. Prof. : Dzenan Ridjanovic

Bases de données Page 1 de 11. Bases de données. Prof. : Dzenan Ridjanovic Bases de données Page 1 de 11 1- Objectifs généraux Bases de données Prof. : Dzenan Ridjanovic acquérir les principes et concepts fondamentaux dans le domaine des bases de données; développer les connaissances

Plus en détail

Olivier Mondet http://unidentified-one.net

Olivier Mondet http://unidentified-one.net T-GSI Ch.4 Le Langage SQL LDD, LCD Cet exercice guidé reprend le plan suivis lors de l intervention de formation faite pour l académie de Versailles. L objectif principal visait en la présentation du langage

Plus en détail

Les entrées/sorties Java (sérialisation, accès aux chiers et connexion réseau)

Les entrées/sorties Java (sérialisation, accès aux chiers et connexion réseau) Année 2008-2009 Les entrées/sorties Java (sérialisation, accès aux chiers et connexion réseau) Nicolas Baudru mél : nicolas.baudru@esil.univmed.fr page web : nicolas.baudru.perso.esil.univmed.fr 1 Introduction

Plus en détail

Chapitre 1 : Introduction aux bases de données

Chapitre 1 : Introduction aux bases de données Chapitre 1 : Introduction aux bases de données Les Bases de Données occupent aujourd'hui une place de plus en plus importante dans les systèmes informatiques. Les Systèmes de Gestion de Bases de Données

Plus en détail

Cours: Administration d'une Base de Données

Cours: Administration d'une Base de Données Bases de Données Avancées Module A IUT Lumière, License CE-STAT 2006-2007 Pierre Parrend Cours: Administration d'une Base de Données Table of Contents Principes...1 Structure d'un Base de Données...1 Architecture...1

Plus en détail

Mysql. Les requêtes préparées Prepared statements

Mysql. Les requêtes préparées Prepared statements Mysql Les requêtes préparées Prepared statements Introduction Les prepared statements côté serveur sont une des nouvelles fonctionnalités les plus intéressantes de MySQL 4.1 (récemment sorti en production

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

Connexion à une base de données. Connexion à une base de données. Connexion à une base de données Développement d'une application

Connexion à une base de données. Connexion à une base de données. Connexion à une base de données Développement d'une application On souhaite réaliser la connexion d'un programme avec des sources de données Ici, des bases de données relationnelles Deux approches sont possibles qui mettent en œuvre chacune son propre jeu de classes

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

Stockage du fichier dans une table mysql:

Stockage du fichier dans une table mysql: Stockage de fichiers dans des tables MYSQL avec PHP Rédacteur: Alain Messin CNRS UMS 2202 Admin06 30/06/2006 Le but de ce document est de donner les principes de manipulation de fichiers dans une table

Plus en détail

Le Langage SQL version Oracle

Le Langage SQL version Oracle Université de Manouba École Supérieure d Économie Numérique Département des Technologies des Systèmes d Information Le Langage SQL version Oracle Document version 1.1 Mohamed Anis BACH TOBJI anis.bach@isg.rnu.tn

Plus en détail

Chapitre 4. 4.1 Installation de MySQL. Au fond, est-ce que ranger ça ne revient pas un peu à foutre le bordel dans son désordre?

Chapitre 4. 4.1 Installation de MySQL. Au fond, est-ce que ranger ça ne revient pas un peu à foutre le bordel dans son désordre? Chapitre 4 Introduction à SQL Au fond, est-ce que ranger ça ne revient pas un peu à foutre le bordel dans son désordre? Philippe Geluck 4.1 Installation de MySQL Pour télécharger MySQL avec l'installateur

Plus en détail

M2PLS - M2EID TP SPRING

M2PLS - M2EID TP SPRING M2PLS - M2EID TP SPRING Référence du document : Http://www-lipn.univ-paris13.fr/M2PLS/tp_spring.pdf Dernière modification : 25/11/11 Type de document : Travaux pratiques Rédacteur : Fortier Michael fortier@univ-paris13,fr

Plus en détail

Chapitre 2. Classes et objets

Chapitre 2. Classes et objets Chapitre 2: Classes et Objets 1/10 Chapitre 2 Classes et objets Chapitre 2: Classes et Objets 2/10 Approche Orientée Objet Idée de base de A.O.O. repose sur l'observation de la façon dont nous procédons

Plus en détail

PRESENTATION. Document1 Serge GUERINET Page 1

PRESENTATION. Document1 Serge GUERINET Page 1 PRESENTATION Les domaines couverts par la série STG sont tous des pourvoyeurs ou exploitants des bases de données. Que l'on gère la relation aux clients, le suivi de l'activité financière, la comptabilité

Plus en détail

Memento MYSQL LINUX. Pour installer le serveur Mysql. Installer les paquets suivants :

Memento MYSQL LINUX. Pour installer le serveur Mysql. Installer les paquets suivants : Memento MYSQL LINUX Pour installer le serveur Mysql Installer les paquets suivants : Mysql-server (moteur de bases de données) Apache2 (serveur web si besoin) Php5 (langage de programmation permettant

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

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

et Groupe Eyrolles, 2006, ISBN : 2-212-11747-7

et Groupe Eyrolles, 2006, ISBN : 2-212-11747-7 Tsoft et Groupe Eyrolles, 2006, ISBN : 2-212-11747-7 OEM Console Java OEM Console HTTP OEM Database Control Oracle Net Manager 6 Module 6 : Oracle Enterprise Manager Objectifs Contenu A la fin de ce module,

Plus en détail

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org Diffusé par Le Projet Documentation OpenOffice.org OpenOffice.org Documentation Project How-To Table des matières 1. Introduction...3

Plus en détail

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013 NFA 008 Introduction à NoSQL et MongoDB 25/05/2013 1 NoSQL, c'est à dire? Les bases de données NoSQL restent des bases de données mais on met l'accent sur L'aspect NON-relationnel L'architecture distribuée

Plus en détail

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE 2 ème partie : REQUÊTES Sommaire 1. Les REQUÊTES...2 1.1 Créer une requête simple...2 1.1.1 Requête de création de listage ouvrages...2 1.1.2 Procédure de

Plus en détail

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Le langage SQL pour Oracle - partie 1 : SQL comme LDD Le langage SQL pour Oracle - partie 1 : SQL comme LDD 1 SQL : Introduction SQL : Structured Query Langage langage de gestion de bases de donn ees relationnelles pour Définir les données (LDD) interroger

Plus en détail

FileMaker 13. Guide ODBC et JDBC

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

Plus en détail

Les BASES de DONNEES dans WampServer

Les BASES de DONNEES dans WampServer Les BASES de DONNEES dans WampServer 1 Définitions Générales Une base de données (BDD) permet d'enregistrer, de stocker, de ranger des données de façon organisée et hiérarchisée. SQL est le langage qui

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 J2EE GUIDE DE DEPLOIEMENT DE L APPLICATION WEB DE GESTION DES COMPTES

TP J2EE GUIDE DE DEPLOIEMENT DE L APPLICATION WEB DE GESTION DES COMPTES 2008 UFR Ingénieurs 2000 Vivien Boistuaud Julien Herr TP J2EE GUIDE DE DEPLOIEMENT DE L APPLICATION WEB DE GESTION DES COMPTES Ce document a été réalisé par V. Boistuaud et J. Herr dans le cadre des travaux

Plus en détail

Utiliser Access ou Excel pour gérer vos données

Utiliser Access ou Excel pour gérer vos données Page 1 of 5 Microsoft Office Access Utiliser Access ou Excel pour gérer vos données S'applique à : Microsoft Office Access 2007 Masquer tout Les programmes de feuilles de calcul automatisées, tels que

Plus en détail

Auto-évaluation La programmation database en JDBC

Auto-évaluation La programmation database en JDBC Auto-évaluation La programmation database en JDBC Document: f1216test.fm 02/04/2012 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION LA PROGRAMMATION

Plus en détail

JDBC JDBC. Java DataBase Connectivity

JDBC JDBC. Java DataBase Connectivity Java DataBase Connectivity Philippe GENOUD UJF Février 2004 1 Introduction Offre une API unique d accès à toute BD conforme au standard SQL-92 Objectifs : Fournir un accès homogène aux SGBD une application

Plus en détail

Bases de données relationnelles

Bases de données relationnelles Bases de données relationnelles Système de Gestion de Bases de Données Une base de données est un ensemble de données mémorisé par un ordinateur, organisé selon un modèle et accessible à de nombreuses

Plus en détail

Le langage SQL (première partie) c Olivier Caron

Le langage SQL (première partie) c Olivier Caron Le langage SQL (première partie) 1 Plan Le S.G.B.D. postgres Le langage SQL Langage de manipulation de données Langage de requêtes 2 Quelques mots sur Postgres (1/2) Travaux de Stonebraker (Univ. Berkeley)

Plus en détail

Si le médecin agit en situation d urgence, insérer une trace de ses requêtes. Si le patient est cardiaque, le préciser dans le motif de la visite

Si le médecin agit en situation d urgence, insérer une trace de ses requêtes. Si le patient est cardiaque, le préciser dans le motif de la visite Précompilateur Compilateur LP PROGRAMMATION SQL Limites de SQL Problématique de la connexion langage hôte/sql 3 approches Embedded SQL (PRO*C, SQLJ ) API de bas niveau (SQL-CLI, ODBC, ) Langage dédié (PL/SQL,

Plus en détail

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 SHERLOCK 7 Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 Cette note montre comment intégrer un script Java dans une investigation Sherlock et les différents aspects de Java script. S T E M M E R I M A G I N

Plus en détail

Instructions de mise à jour du micrologiciel des lecteurs SSD clients Crucial

Instructions de mise à jour du micrologiciel des lecteurs SSD clients Crucial Instructions de mise à jour du micrologiciel des lecteurs SSD clients Crucial Présentation Au moyen de ce guide, un utilisateur peut effectuer une mise à jour du micrologiciel sur les SSD Crucial Client

Plus en détail

Chapitre 10. Les interfaces Comparable et Comparator 1

Chapitre 10. Les interfaces Comparable et Comparator 1 Chapitre 10: Les interfaces Comparable et Comparator 1/5 Chapitre 10 Les interfaces Comparable et Comparator 1 1 Ce chapitre a été extrait du document "Objets, Algorithmes, Patterns" de [René Lalement],

Plus en détail

BD Avancées TRAVAUX DIRIGÉS. UFR Sciences et Techniques. IUP Blois Master SIR 1 année

BD Avancées TRAVAUX DIRIGÉS. UFR Sciences et Techniques. IUP Blois Master SIR 1 année UFR Sciences et Techniques IUP Blois Master SIR 1 année BD Avancées TRAVAUX DIRIGÉS Enseignant Jean-Yves ANTOINE (Jean-Yves.Antoine AT univ-tours.fr) Sécurité des données CONTRÔLE DES ACCES CONCURRENTS

Plus en détail

Pour les débutants. langage de manipulation des données

Pour les débutants. langage de manipulation des données Pour les débutants SQL : langage de manipulation des données Les bases de données sont très utilisées dans les applications Web. La création, l interrogation et la manipulation des données de la base sont

Plus en détail

E-mail : contact@nqicorp.com - Web : http://www.nqicorp.com

E-mail : contact@nqicorp.com - Web : http://www.nqicorp.com - 5, rue Soutrane - 06560 Valbonne Sophia-Antipolis E-mail : contact@nqicorp.com - Web : http://www.nqicorp.com NQI Orchestra 3.3 - Guide d'installation Linux....................................................................

Plus en détail

1.1- Compiler et exécuter un premier programme en C++

1.1- Compiler et exécuter un premier programme en C++ 1.1- Compiler et exécuter un premier programme en C++ 1- Un premier programme en C++ 2- Compilation et exécution 1- Un premier programme en C++ Le premier programme que propose le cours consiste à afficher

Plus en détail

Mise en oeuvre d'une base de données mono-utilisateur avec SQLite

Mise en oeuvre d'une base de données mono-utilisateur avec SQLite Mise en oeuvre d'une base de données mono-utilisateur avec SQLite Utilisation de SQLite dans le logiciel CASSIS Plan Le contexte scientifique avec le logiciel CASSIS La problématique avec Mysql La solution

Plus en détail

Web dynamique. Techniques, outils, applications. (Partie C)

Web dynamique. Techniques, outils, applications. (Partie C) Web dynamique Techniques, outils, applications (Partie C) Nadir Boussoukaia - 2006 1 SOMMAIRE 1. MySQL et PHP (20 min) 2. SQL (petits rappels) (20 min) 2 MySQL et PHP Synthèse 3 MySQL et PHP SGBD MySQL

Plus en détail

PHP 4 PARTIE : BASE DE DONNEES

PHP 4 PARTIE : BASE DE DONNEES PHP 4 PARTIE : BASE DE DONNEES 1. Introduction 2. Présentation de MySQL 3. Principe 4. Connexion 5. Interrogation 6. Extraction des données 7. Fonctions de services 8. Traitement des erreurs 9. Travaux

Plus en détail

Test de HSQLDB et Comparatif avec Sqlite

Test de HSQLDB et Comparatif avec Sqlite Test de HSQLDB et Comparatif avec Sqlite Table des matières 1 - Conditions préalables... 2 2 - Installation de HSQLDB... 2 3 - Premier Test de HSQLDB... 2 4 - Deuxième Test pour bien comprendre :-)...

Plus en détail

Gestion d une école. FABRE Maxime FOUCHE Alexis LEPOT Florian

Gestion d une école. FABRE Maxime FOUCHE Alexis LEPOT Florian Gestion d une école FABRE Maxime 2015 Sommaire Introduction... 2 I. Présentation du projet... 3 1- Lancement de l application... 3 Fonctionnalités réalisées... 4 A. Le serveur... 4 1 - Le réseau... 4 2

Plus en détail

Gestion des utilisateurs et de leurs droits

Gestion des utilisateurs et de leurs droits Gestion des utilisateurs et de leurs droits Chap. 12, page 323 à 360 Lors de la création d'un utilisateur vous devez indiquer son nom, ses attributs, son profil, la méthode d'authentification (par le SE

Plus en détail

Licence d'informatique 2004-2005 Examen Programmation orientée objet Juin 2005

Licence d'informatique 2004-2005 Examen Programmation orientée objet Juin 2005 Licence d'informatique 2004-2005 Examen Programmation orientée objet Juin 2005 Durée de l'épreuve : 2 heures TRÈS IMPORTANT : respectez l'ordre des questions. La lisibilité sera un critère important pour

Plus en détail

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation Base de données S. Lèbre slebre@unistra.fr Université de Strasbourg, département d informatique. Présentation du module Contenu général Notion de bases de données Fondements / Conception Utilisation :

Plus en détail

BTS S.I.O. 2012-2013 PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

BTS S.I.O. 2012-2013 PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais BTS S.I.O. 2012-2013 PHP OBJET Module SLAM4 Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais Table des matières 1 But... 3 2 Les bases :... 3 3 Utilisation d'une classe : Instanciation...3

Plus en détail

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février 2014 17:30 à 20:30

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février 2014 17:30 à 20:30 Examen intra 20 février 2014 17:30 à 20:30 Nom, prénom : Code permanent : Répondez directement sur le questionnaire. Question #1 5% Quelle influence peut avoir le typage dynamique sur la maintenabilité

Plus en détail

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes Langage SQL (1) Sébastien Limet Denys Duchier IUT Orléans 4 septembre 2007 Notions de base qu est-ce qu une base de données? SGBD différents type de bases de données quelques systèmes existants Définition

Plus en détail