Java - MySQL. Code: java-mysql



Documents pareils
Java DataBaseConnectivity

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

TP Programmation Java / JDBC / Oracle

OpenPaaS Le réseau social d'entreprise

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Programmation d application Bases de données avec Java

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

Accès aux bases de données

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

Groupe Eyrolles, 2005, ISBN :

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

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

Java et les bases de données

Web Tier : déploiement de servlets

1. Langage de programmation Java

Configurer la supervision pour une base MS SQL Server Viadéis Services

Construire une base de donnée pour bibliothèque

MySQL avec Mac OS X. Quelques manipulations avec le terminal sont nécessaires si une version de MySQL est déjà lancée:

Olivier Mondet

Paradox 9. Guide de l utilisateur jpdox Web Utilities

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

JDBC le langage Java XVI-1 JMF

La base de données XML exist. A. Belaïd

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)

Application web de gestion de comptes en banques

Gestion de stock pour un magasin

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Tutoriel d installation de Hibernate avec Eclipse

JavaServer Pages (JSP)

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

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

Création d une application JEE

Notes de cours : bases de données distribuées et repliquées

PHP et les Bases de données - Généralités

Logiciel de gestion de caisse et d ardoises

Java Database Connectivity (JDBC) - Langage SQL

PDO : PHP Data Object 1/13

Les architectures 3-tiers Partie I : les applications WEB

Pratique et administration des systèmes

Plan du cours. Historique du langage Nouveautés de Java 7

Module BD et sites WEB

JDBC JDBC. Java DataBase Connectivity

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

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

1. Base de données SQLite

Architecture Orientée Service, JSON et API REST

Introduction au langage Java

Programmer en JAVA. par Tama

Attaques applicatives

Développement Logiciel

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

CREATION WEB DYNAMIQUE

FileMaker 10. Guide ODBC et JDBC

Applet pour visualiser les variables «automate» notifiées

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

BIRT (Business Intelligence and Reporting Tools)

as Architecture des Systèmes d Information

Connectivité aux bases de données Java (JDBC)

Modernisation, développement d applications et DB2 sous IBM i Technologies, outils et nouveautés Volubis.fr

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Bases de SQL. Hacks 1-6 CHAPITRE UN

Thierry Déléris. BMC Mainview Data Server Synthèse & Mise en œuvre

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Java Licence Professionnelle CISII,

HTTP 1.1. HyperText Transfer Protocol TCP IP ...

Dis papa, c est quoi un bus logiciel réparti?

Mysql avec EasyPhp. 1 er mars 2006

Paginer les données côté serveur, mettre en cache côté client

Remote Method Invocation (RMI)

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Une introduction à Java

Corrigé des exercices sur les références

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Accéder à PostgreSQL par JDBC via un tunnel SSL Java

MS SQL Express 2005 Sauvegarde des données

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Création d un service web avec NetBeans 5.5 et SJAS 9

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

L installation a quelque peu changée depuis les derniers tutos, voici une actualisation.

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Dialogue avec la base de données

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Le Modèle de Sécurité dans JAVA

TP1. Outils Java Eléments de correction

Contenu. Cocher : Network Policy and Access Services > Next > Next. Cocher : Network Policy Server > Next > Install

Exploitation de bases de données relationnelles et orientées objet IFT287

Présentation Windows Azure Hadoop Big Data - BI

Package Java.util Classe générique

Stockage du fichier dans une table mysql:

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Vanilla : Virtual Box

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

LES ACCES ODBC AVEC LE SYSTEME SAS

PROGRAMMATION PAR OBJETS

Transcription:

Java - MySQL java-mysql Java - MySQL Code: java-mysql Originaux url: http://tecfa.unige.ch/guides/tie/html/java-mysql/java-mysql.html url: http://tecfa.unige.ch/guides/tie/pdf/files/java-mysql.pdf Auteurs et version Daniel K. Schneider- Vivian Synteta Version: 1.0 (modifié le 25/1/01) Prérequis Module technique précédent: mysql-intro Module technique précédent: java-intro Module technique précédent: java-jhtml ou java-jsp (pour une partie) Module technique précédent: java-swing (pour une partie)

Java - MySQL -. java-mysql-2 Modules Module technique suivant:... Objectifs Java - MySQL basics :)

Java - MySQL - 1. Introduction au JDBC java-mysql-3 1. Introduction au JDBC Principe de base: Interface Java - bases de données SQL: JDBC = Java Data Base Connection Le langage Java définit une interface (commune) Chaque vendeur doit fournir une implémentation certaines sont fournis avec le Java core certaines (comme MM pour MySQL doivent être importées) Quatre types d interfaces 1. JDBC-ODBC bridge plus ODBC driver nécessite une installation spéciale (driver du côté client par exemple) 2. Native-API partly-java driver se connecte dans une API client 3. JDBC-Net pure Java driver utilise un middleware (serveur WWW - DB) 4. Native-protocol pure Java driver (on va utiliser ce type) connexion directe Java-DB via le réseau, driver MySQL par exemple

Java - MySQL - 1. Introduction au JDBC java-mysql-4 Classes Java et outils utilisés dans ce module Driver MySQL url: mm.mysql Driver: http://www.worldserver.com/mm.mysql/ tecfa2: /local/java/classes/mm-jdbc/mysql.jar Classes Swing (Swing ou le Netscape/Java plugin: url: http://java.sun.com/products/jfc/index.html Classes Servlet: url: servlet SDK: http://java.sun.com/products/servlet/index.html tecfa2: /local/java/jsdk2.0/lib/jsdk.jar Copies dans http://tecfa.unige.ch/guides/java/classes/ on y met une copie de la plupart des classes utilisées

Java - MySQL - 1. Introduction au JDBC java-mysql-5 1.1 Les interfaces API de base Il existe une implémentation pour la plupart des bases de données on les appelle des "driver". Souvent, il faut trouver driver qq part et mettre son *.jar dans le classpath JDBC API documentation: http://tecfa2.unige.ch/guides/java/jdk1.1/docs/api/package-java.sql.html MM MySQL Driver documentation: http://tecfa2.unige.ch/guides/mysql/local/mm-jdbc/doc/apidoc/ A. java.sql.drivermanager Gère les drivers JDBC on peut indiquer un Driver, qui existe: soit avec la system property jdbc.drivers (Oracle par exemple) soit avec des classes importées (comme dans notre cas) Bout de code: try { Class.forName("org.gjt.mm.mysql.Driver"); catch(exception ex) {... return;

Java - MySQL - 1. Introduction au JDBC java-mysql-6 B. java.sql.connection établir une connexion avec la base de données permet d obtenir de la méta-information sur les tables (et autres) Bout de code: String url = "jdbc:mysql://tecfa2.unige.ch:3306/coffeebreak"; String user = "nobody"; String password = null; Connection con = DriverManager.getConnection(url, user, password); Attention: (étudiants STAF) url = "jdbc:mysql://localhost:3306/deiaco"; C. java. sql.statement permet d envoyer un statement SQL vers la base de données le résultat de la requête va se retrouver dans un ResultSet Bout de code: String querystring = "select COF_NAME, PRICE from COFFEES"; Statement stmt = con.createstatement(); ResultSet rs = stmt.executequery(querystring);

Java - MySQL - 1. Introduction au JDBC java-mysql-7 D. java.sql.resultset Le Resultset (résultat d une requête) est un objet spécial On y accède ligne par ligne (méthode next) ou avec une positionnement absolue ou relative par rapport à la ligne courante De chaque ligne, on extrait les "colonnes"avec des méthodes getxxx Voir: http://tecfa.unige.ch/guides/java/tutorial/jdbc/basics/retrieving.html Note: la méthode getstring marche à peu près avec tout Bout de code: while (rs.next()) { String s = rs.getstring("cof_name"); float n = rs.getfloat("price"); System.out.println(s + " " + n); Plus de détails: 2.3 Anatomie d un programme JDBC [10] Voir le tutoriel de SUN pour plus des exemples et infos: url: http://developer.java.sun.com/developer/books/jdbctutorial/

Java - MySQL - 2. Une introduction avec les exemples Coffee-break java-mysql-8 2. Une introduction avec les exemples Coffee-break Voir le JDBC Database Access du "Java Tutoriel" de SUN http://tecfa.unige.ch/guides/java/tutorial/jdbc/index.html 2.1 La table MySQL Il s agit d une simple table sur le server MySQL de tecfa2.unige.ch qu on définit: # Host: tecfa2 Database: COFFEEBREAK >CREATE TABLE COFFEES ( COF_NAME varchar(32), SUP_ID int(11), PRICE float(10,2), SALES int(11), TOTAL int(11) ); # Insertion de 2 lignes... INSERT INTO COFFEES VALUES ( Colombian,101,7.99,0,0); INSERT INTO COFFEES VALUES ( Espresso,150,9.99,0,0); Et qui donne le resultat suivant (avec mysqlshow ): Database: COFFEEBREAK Table: COFFEES Rows: 12 +----------+-------------+------+-----+---------+-------+ Field Type Null Key Default Extra +----------+-------------+------+-----+---------+-------+ COF_NAME varchar(32) PRI SUP_ID int(11) YES PRICE float(10,2) YES SALES int(11) YES TOTAL int(11) YES +----------+-------------+------+-----+---------+-------+

Java - MySQL - 2. Une introduction avec les exemples Coffee-break java-mysql-9 2.2 Les exemples JDBC/Coffeebreak Exemple 2-1: Coffeebreak/JDBC examples Voir http://tecfa.unige.ch/guides/java/staf2x/ex/jdbc/coffee-break/readme.html Ces exemples montrent un certain nombre de techniques JDBC avec des applications, servlets et applets Exemple 2-2: Point de départ: les simples applications JDBC Voir http://tecfa.unige.ch/guides/java/staf2x/ex/jdbc/coffee-break/simple/ Lisez d abord la section 2.3 Anatomie d un programme JDBC [10] Ensuite étudiez dans l ordre: ConnectCoffeesMM.java CreateCoffeesMM.java (n essayez pas ce programme sans l adapter SVP!) InsertCoffees.java QueryCoffees.java

Java - MySQL - 2. Une introduction avec les exemples Coffee-break java-mysql-10 2.3 Anatomie d un programme JDBC Voir aussi section 1.1 Les interfaces API de base [5] A. Définition du driver Normalement au début d un programme, dans une méthode init() ou start() try { Class.forName("org.gjt.mm.mysql.Driver"); catch(exception ex) {... return; Attention: N oubliez pas de mettre le Driver dans le classpath! N importez pas les packages dans le programme

Java - MySQL - 2. Une introduction avec les exemples Coffee-break java-mysql-11 B. Connexion Egalement au début (si vous pensez faire plusieurs requêtes) vous avez intérêt à réfléchir comment définir url, user et password: soit au début du fichier, soit dans des paramètres de l applet, soit en demandant à l utilisateur (ne mettez pas de mot de passe en clair si possible) String url = "jdbc:mysql://tecfa2.unige.ch:3306/coffeebreak"; String user = "nobody"; String password = null; try { con = DriverManager.getConnection(url, user, password); catch(sqlexception ex) {... une connexion se ferme con.close(); soit à la fin de l application soit dans une méthode destroy(), close(), etc. pour les applets et servlets

Java - MySQL - 2. Une introduction avec les exemples Coffee-break java-mysql-12 C. La requête SQL 1. Il faut d abord créer un objet "Statement" qui enverra des requêtes SQL à la base de données Statement stmt = con.createstatement(); un objet statement peut être utilisé plusieurs fois 2. La classe statement possède deux méthodes pour envoyer du SQL à la DB: executequery() pour des requêtes (SELECT) String querystring = "SELECT COF_NAME, PRICE FROM COFFEES";... stmt.executequery(querystring); executeupdate() pour des updates (INSERT, UPDATE etc.) String querystring = "INSERT INTO COFFEES values (NULL, Vivian coffee, 100 )";... stmt.executeupdate(querystring); 3. Récupération du résultat des requêtes(select) String querystring = "SELECT COF_NAME, PRICE FROM COFFEES"; ResultSet rs = stmt.executequery(querystring); la requête retourne un objet (étrange) de type ResultSet on peut y accéder ligne par ligne ou autrement (charactéristique très recent) voir D. Traitement d un ResultSet dont on connaît la structure [14] ne PAS confondre les colonnes dans la db avec celles du ResultSet!

Java - MySQL - 2. Une introduction avec les exemples Coffee-break java-mysql-13 4. Récupération du résultat des requêtes (INSERT, UPDATE, etc.) String updatestring = "UPDATE COFFEES SET SALES = 75 WHERE COF_NAME LIKE Colombian "; int updaterowcount = stmt.executeupdate(updatestring); retourne le nombre de colonnes mises à jour / insérées utile pour donner un feedback (0 indique un update sans effet, par exemple le résultat d une syntaxe juste mais mauvaises valeurs). Note: Un faux statement SQL produit une erreur 5. Statements "préparés" (Prepared statements) PreparedStatement prep = con.preparestatement( "INSERT into Data values (?,?)"); Connection.prepareStatement, à la place de: Connection.createStatement quand on veut répéter le même "statement" plusieurs fois les "?" remplacent les différentes données qu on va envoyer à la bd chaque fois avec les méthodes setxxx, par ex: prep.setstring(1, "Jim"); prep.setint(2, 70); NOTE: Il faut faire attention aux types des données! Par ex: setint, setfloat, setdouble pour Integer, Float et Double, setstring pour char et varchar, et setdate pour dates. *** On exécute avec executeupdate() ***

Java - MySQL - 2. Une introduction avec les exemples Coffee-break java-mysql-14 D. Traitement d un ResultSet dont on connaît la structure En règle général vous avez intérêt à séparer requête et affichage: copier les données dans une table que vous passez ensuite à une méthode qui fait l affichage (enfin faut savoir utiliser les Vectors...) ou encore passer des objets à une fonction qui fait l affichage on accède la première ligne des resultats avec result.next(); On extrait les colonnes que l on veut avec des méthodes getxxx, voir: http://tecfa.unige.ch/guides/java/tutorial/jdbc/basics/retrieving.html Note: la méthode getstring marche à peu près avec tout, mais on a intéret à récuperer un nombre comme nombre si on désire faire des calculs par exemple getint, getfloat, getdouble pour Integer, Float et Double, getstring pour char et varchar, et getdate pour dates. Récuperation de 2 colonnes: while (rs.next()) { String s = rs.getstring("cof_name"); float n = rs.getfloat("price"); System.out.println(s + " " + n);

Java - MySQL - 2. Une introduction avec les exemples Coffee-break java-mysql-15 E. Les meta data Le ResultSet contient aussi des meta data (données sur les colonnes, le nombre de colonnes, etc. (PAS le nombre de lignes!) ResultSetMetaData rsmeta = (ResultSetMetaData) rs.getmetadata(); // Get the N of Cols in the ResultSet int nocols = rsmeta.getcolumncount(); // initalize the Vector that holds labels String [] rescolnames = new String [nocols]; for (int c=1; c<=nocols; c++) { String el = rsmeta.getcolumnlabel(c); rescolnames[c-1]= el; F. Traitement d un ResultSet dont on ne connaît pas la structure Récupération de toutes les colonnes et stockage dans une table (sans savoir ce qui a dans le ResultSet: (Ex. avec une matrice (à ne pas copier, faudrait utiliser Vector() à la place... ) int nocols = rsmeta.getcolumncount(); int line=0; String [][] resultdata = new String [100][noCols]; while (rs.next()) { for (int c=1; c<=nocols; c++) { String el = rs.getstring(c); resultdata[line][c-1] = el; line++;

Java - MySQL - 2. Une introduction avec les exemples Coffee-break java-mysql-16 G. Gestion des erreurs SQL (SQLExceptions, Warnings, etc) Il existe 3 types d exceptions et 3 classes alors: SQLException, SQLWarning et DataTruncation et vous avez intérêt à faire ça sérieusement, par exemple: catch(sqlexception ex) { System.err.println("==> SQLException: "); while (ex!= null) { System.out.println("Message: " + ex.getmessage ()); System.out.println("SQLState: " + ex.getsqlstate ()); System.out.println("ErrorCode: " + ex.geterrorcode ()); ex = ex.getnextexception(); System.out.println(""); Exercice 1: Les premiers pas avec le JDBC 1. Créez une table dans une base de données (ou travaillez avec une que vous avez déjà)... demandez des permissions pour "nobody" (si vous n avez pas) 2. Adaptez les exemples simples ci-dessus Classpath pour les exemples simples: doit contenir le driver mm.mysql (mysql.jar) Sous Windows, tout dépend de votre installation... :) Sous Unix/Tecfa, on conseille de taper: source /local/env/java-sql-xml-ser-swing.csh

Java - MySQL - 2. Une introduction avec les exemples Coffee-break java-mysql-17 2.4 Programme Java complet: simple query import java.sql.*; public class QueryCoffees { public static void main(string args[]) { // ---- configure this for your site String username = "nobody"; String password = null; // The URL that will connect to TECFA s MySQL server // Syntax: jdbc:type:machine:port/db_name String url = "jdbc:mysql://tecfa2.unige.ch:3306/coffeebreak"; // A canned query string String querystring = "SELECT COF_NAME, PRICE FROM COFFEES"; // ---- configure END // INSTALL/load the Driver (Vendor specific Code) try { Class.forName("org.gjt.mm.mysql.Driver"); catch (java.lang.classnotfoundexception e) { System.err.print("ClassNotFoundException: "); System.err.println(e.getMessage()); try { Connection con; Statement stmt; // Connection to the database at URL with usename and password con = DriverManager.getConnection(url,username,password); System.out.println ("Ok, connection to the DB worked.");

Java - MySQL - 2. Une introduction avec les exemples Coffee-break java-mysql-18 System.out.println ("Let s see can retrieve something with: " + querystring); // Create a Statement Object stmt = con.createstatement(); // Send the query and bind to the result set ResultSet rs = (ResultSet) stmt.executequery(querystring); while (rs.next()) { String s = rs.getstring("cof_name"); float n = rs.getfloat("price"); System.out.println(s + " " + n); // Close resources stmt.close(); con.close(); // print out decent error messages catch(sqlexception ex) { System.err.println("==> SQLException: "); while (ex!= null) { System.out.println("Message: " + ex.getmessage ()); System.out.println("SQLState: " + ex.getsqlstate ()); System.out.println("ErrorCode: " + ex.geterrorcode ()); ex = ex.getnextexception(); System.out.println("");

Java - MySQL - 3. Servlets ou pages JSP java-mysql-19 3. Servlets ou pages JSP L archive mysql.jar est installé sur nos serveurs Java Faites un répertoire "WEB-INF" dans votre espace travaux et là dedans un sousrépertoire "classes" où vous allez mettre les classes URL pour executer: http://tecfa.unige.ch/staf/staf-f/deiaco/servlet/ 3.1 Une simple page JSP Exemple 3-1: Une simple page JSP avec fenêtre "Query" url: http://tecfa2.unige.ch/guides/jsp/ex/jdbc/coffee-break/coffeebreakline.jsp url: http://tecfa2.unige.ch/guides/jsp/ex/jdbc/coffee-break/coffeebreakline.jsp.text <h1>coffee Break JSP Example</h1> <%@ page errorpage="error.jsp" import="java.sql.*" %> <%! // --------------- inits for the servlet -------------- // The database connection Connection con; // The statement Statement stmt; // The querystring String querystring = null; // ---- configure this for your site String username = "nobody"; String password = null;

Java - MySQL - 3. Servlets ou pages JSP java-mysql-20 // The URL that will connect to TECFA s MySQL server // Syntax: jdbc:type:machine:port/db_name // String url = "jdbc:mysql://localhost:3306/coffeebreak"; String url = "jdbc:mysql://tecfa2.unige.ch:3306/coffeebreak"; %> <% // --------------- code for the service method -------------- // Let s see if we got a request querystring = request.getparameter ("QUERYSTRING"); if ((querystring!= "") && (querystring!= null)) { try { Class.forName("org.gjt.mm.mysql.Driver"); // Establish Connection to the database at URL with usename and password con = DriverManager.getConnection(url, username, password); out.println ("Ok, connection to the DB is working."); catch (Exception e) // (ClassNotFoundException and SQLException) { throw(new UnavailableException(this, "Sorry! The Database didn t load!")); try { out.println ("<h2>you asked: </h2>"); out.println ( "Query: " + querystring + "<BR>" ); out.println("<h3>query Result</h3>"); out.println("<table border>"); stmt = con.createstatement(); ResultSet rs = stmt.executequery(querystring);

Java - MySQL - 3. Servlets ou pages JSP java-mysql-21 ResultSetMetaData rsmeta = rs.getmetadata(); // Get the N of Cols in the ResultSet int nocols = rsmeta.getcolumncount(); out.println("<tr>"); for (int c=1; c<=nocols; c++) { String el = rsmeta.getcolumnlabel(c); out.println("<th> " + el + " </th>"); out.println("</tr>"); while (rs.next()) { out.println("<tr>"); for (int c=1; c<=nocols; c++) { String el = rs.getstring(c); out.println("<td> " + el + " </td>"); out.println("</tr>"); out.println("</table>"); catch (SQLException ex ) { out.println ( "<P><PRE>" ); while (ex!= null) { out.println("message: " + ex.getmessage ()); out.println("sqlstate: " + ex.getsqlstate ()); out.println("errorcode: " + ex.geterrorcode ()); ex = ex.getnextexception(); out.println(""); out.println ( "</PRE><P>" );

Java - MySQL - 3. Servlets ou pages JSP java-mysql-22 %> <hr>you can now try to retrieve something. <FORM METHOD=POST ACTION="CoffeeBreakLine.jsp"> Query: <INPUT TYPE=TEXT SIZE=50 NAME="QUERYSTRING"> <INPUT TYPE=SUBMIT VALUE="GO!"> </FORM> <hr><pre>e.g.: SELECT * FROM COFFEES SELECT * FROM COFFEES WHERE PRICE > 9 SELECT PRICE, COF_NAME FROM COFFEES <pre> <hr><a href="coffeebreakline.jsp">encore une fois?</a> Source: <A HREF="CoffeeBreakLine.jsp.text">CoffeeBreakLine.jsp.text</A> Exemple 3-2: Une simple page JSP avec fenêtres Query et UpDate presque pareil que l exemple précédent, mais rajoute une fenêtre pour faire des updates url: http://tecfa2.unige.ch/guides/jsp/ex/jdbc/coffee-break/coffeebreakline2.jsp

Java - MySQL - 3. Servlets ou pages JSP java-mysql-23 3.2 Simple Servlet Exemple 3-3: Simple Servlet url: http://tecfa2.unige.ch:8080/servlet/coffeebreakservlet (Sun/Jws) url: http://tecfa2.unige.ch/servlets/coffeebreakservlet (Apache/JServ) url: http://tecfa2.unige.ch/guides/java/staf2x/ex/jdbc/coffee-break/servlet/ import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; [...] public class CoffeeBreakServlet extends HttpServlet { // The database connection Connection con; // The statement Statement stmt; // The querystring String querystring = null; public void init(servletconfig conf) throws ServletException { super.init(conf); // ---- configure this for your site String username = "nobody"; String password = null;

Java - MySQL - 3. Servlets ou pages JSP java-mysql-24 // The URL that will connect to TECFA s MySQL server String url = "jdbc:mysql://tecfa2.unige.ch:3306/coffeebreak"; // ---- configure END try { Class.forName("org.gjt.mm.mysql.Driver"); // Connection to the database at URL with username and password con = DriverManager.getConnection(url, username,password); System.out.println ("Ok, connection to the DB is working."); catch (Exception e) // (ClassNotFoundException and SQLException) { throw(new UnavailableException(this, "Sorry! The Database didn t load!")); public void service (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype ( "text/html" ); PrintWriter out = res.getwriter ( ); try { String title = "Coffee Break JDBC Demo Java Servlet"; out.println ( "<html><head><title>" + title + "</title></head>" ); out.println ( "<body><h1>" + title + "</H1>" ); String querystring = req.getparameter ("QUERYSTRING");

Java - MySQL - 3. Servlets ou pages JSP java-mysql-25 if ((querystring!= "") && (querystring!= null)) { out.println ("<h2>you asked: </h2>"); out.println ( "Query: " + querystring + "<BR>" ); out.println("<h3>query Result</h3>"); out.println("<table border>"); Statement stmt = con.createstatement(); ResultSet rs = stmt.executequery(querystring); ResultSetMetaData rsmeta = rs.getmetadata(); // Get the N of Cols in the ResultSet int nocols = rsmeta.getcolumncount(); out.println("<tr>"); for (int c=1; c<=nocols; c++) { String el = rsmeta.getcolumnlabel(c); out.println("<th> " + el + " </th>"); out.println("</tr>"); while (rs.next()) { out.println("<tr>"); for (int c=1; c<=nocols; c++) { String el = rs.getstring(c); out.println("<td> " + el + " </td>"); out.println("</tr>"); out.println("</table>"); catch { [.. gérer les erreurs de la requête...]

Java - MySQL - 3. Servlets ou pages JSP java-mysql-26 out.println ("<hr>you can now try to retrieve something."); out.println("<form METHOD=POST ACTION='/servlet/CoffeeBreakServlet'>"); out.println("query: <INPUT TYPE=TEXT SIZE=50 NAME='QUERYSTRING'> "); out.println("<input TYPE=SUBMIT VALUE='GO!'>"); out.println("</form>"); out.println("<hr><pre>e.g.:"); out.println("select * FROM COFFEES"); out.println("select * FROM COFFEES WHERE PRICE > 9"); out.println("select PRICE, COF_NAME FROM COFFEES"); out.println("<pre>"); out.println ("<hr><a href='/servlet/coffeebreakservlet'>enocre une fois?</a> Source: <A HREF='/develop/servlets-ex/coffee-break/ CoffeeBreakServlet.java'>CoffeeBreakServlet.java</A>"); out.println ( "</body></html>" ); return ;

Java - MySQL - 4. Applications et applets (à REFAIRE et compléter) java-mysql-27 4. Applications et applets (à REFAIRE et compléter) A. Applications il faut les classes nécessaires dans le Classpath! B. Applets L archive mysql.jar doit être accessible par l applet, exemple: <APPLET CODE="MySqlQueryLineApplet.class" WIDTH=500 HEIGHT=300 ARCHIVE="/guides/java/classes/mysql.jar" > </APPLET> Pour utiliser Swing il faut l installer côté client (ou utiliser Java 1.2) Mettre swing.jar dans Netscape\Communicator\Program\Java\Classes\ Pour Java 1.2/ Netscape il faut utiliser le <embed> tag (pour IE <object>, voir la doc!) <EMBED type="application/x-java-applet;version=1.2" width="200" height="200" align="baseline" code="xyzapp.class" codebase="html/" model="models/hyaluronicacid.xyz" pluginspage="http://java.sun.com/products/plugin/1.2/plugin-install.html"> <NOEMBED> No JDK 1.2 support for APPLET!! </NOEMBED> </EMBED> voir: http://204.160.241.19/products/plugin/1.2/docs/tags.html

Java - MySQL - 4. Applications et applets (à REFAIRE et compléter) java-mysql-28 4.1 Applets Exemple 4-1: Very simple Query (My)SQL Applet http://tecfa2.unige.ch/guides/java/staf2x/ex/jdbc/coffee-break/simple-query-applet/ MySqlQueryLineApplet.html Montre comment récuper un query SQL dans un textfield et l envoyer à la DB Fonctionalité limitée! Exemple 4-2: Update / Query SQL Applet for COFFEES http://tecfa2.unige.ch/guides/java/staf2x/ex/jdbc/coffee-break/simple-query-applet/ MySqlUpdateLineApplet.html Montre comment récuperer des queries ou updates dans deux simples textfields et comment afficher (simplement) le résultat Exemple 4-3: Update / Query MySQL Swing Applet for COFFEES http://tecfa2.unige.ch/guides/java/staf2x/ex/jdbc/coffee-break/simple-query-applet/ MySqlUpdateSwingApplet.html Même chose que ci-dessus, mais avec un affichage (plus ou moins) correct N oubliez pas de mettre swing.jar dans vos java/classes de Netscape!

Java - MySQL - 4. Applications et applets (à REFAIRE et compléter) java-mysql-29 A. Pages HTML Voici la section qui inclut l applet, notez: l utilisation de paramètres (cela rend l applet plus portable) l archive mysql.jar <APPLET CODE="MySqlUpdateLineApplet.class" WIDTH=600 HEIGHT=400 ARCHIVE="/guides/java/classes/mysql.jar" > <param name=url value="jdbc:mysql://tecfa2.unige.ch:3306/coffeebreak"> <param name=user value="nobody"> <param name=password value=""> </APPLET> Voici le code Java qui récupère les paramètres String url = null; String user = null; String password = null;... url = getparameter("url"); user = getparameter("user"); // password = getparameter("password"); password = null;

Java - MySQL - 4. Applications et applets (à REFAIRE et compléter) java-mysql-30