Étapes de connexion à une base de données MySQL

publicité
Département Informatique
POO
I4
2009-2010
TP 6: Accès aux bases des données avec NetBeans
Plan :

Introduction aux bases de données MySQL

Rappel SQL

Accès aux bases de données avec Java.
Coordinateur:
ZIDI Kamel
1
Département Informatique
POO
I4
2009-2010
But:
On veut créer une application qui permet de récupérer des données d’une personne (cin, nom,
prenom, adresse) qui se trouvent dans la base de données nommée magestion à partir d’une
simple class Java.
1. Introduction aux bases de données MySQL
MySQL est un système de gestion de bases de données relationnelles. Le SQL dans“MySQL”
signifie “Structured Query Language” : le langage standard pour les traitements de bases de
données.
Référence du langage MySQL :
Structure du langage
Les chaînes
Une chaîne est une séquence de caractères, entourée de guillemets simples (‘'’) ou doubles
(‘"’) (simple seulement si vous êtes en mode ANSI).
Exemples: 'une chaîne' "une autre chaîne"
A l’intérieur d’une chaîne, certaines séquences de caractères ont une signification spéciale.
Chacune d’elle commence par un anti-slash (‘\’), connu comme le caractère d’échappement.
Par exemple pour utiliser un " en tant que composant de la chaîne "Ma chaîne possède un \"".
On protège le " à l'aide d'un anti-slash
Les nombres
Les entiers sont représentés comme une séquence de chiffres. Les décimaux utilisent ‘.’
comme séparateur. Tous les types de nombres peuvent être précédés d’un ‘-’ pour indiquer
une valeur négative.
Un entier peut être utilisé dans un contexte décimal, il sera interprété comme le nombre
décimal équivalent.
Valeurs hexadécimales
MySQL supporte les valeurs hexadécimales. Dans un contexte numérique, elles agissent
comme des entiers (précision 64-bit). Dans un contexte de chaîne, elles agissent comme une
chaîne binaire où chaque paire de caractères hexadécimaux est convertie en caractères :
Exemple : 0xFF pour 255 en hexadécimal
2
Département Informatique
POO
I4
2009-2010
Valeurs NULL
La valeur NULL signifie “pas de données” et est différente des valeurs comme 0 pour les
nombres ou la chaîne vide pour les types chaîne NULL peut être représenté par \N lors de la
récupération ou écriture avec des fichiers (LOAD DATA INFILE, SELECT ... INTO
OUTFILE).
2. Rappel SQL
a. Sélection
SELECT champs FROM table;
SELECT champs FROM table WHERE condition;
b. Insertion
INSERT INTO table Values (valeurs);
c. Suppression
DELETE FROM table WHERE condition;
d. Modification
UPDATE table SET colonne=valeur WHERE condition;
3. Accès aux bases de données avec Java : JDBC
Les étapes à suivre pour réaliser ce TP sont les suivantes :

Création d’une base de données

Création d’une table

Insertion des données

Connection entre base de données et la classe Java

Récupération des données (en utilisant les requêtes SQL)

Gestion des erreurs.
 Obtenir JDBC
Chaque constructeur de SGBD doit fournir son pilote jdbc. Accessible normalement sur son
site officiel. Pour MySQL on aura besoin d'un dossier nommé com qu'on doit le copier dans le
dossier src du projet.
Le package utilisé pour les requêtes SQL est java.sql
3
Département Informatique
POO
I4
2009-2010
 Étapes de connexion à une base de données MySQL
● Définir l'adresse ip ou nom de l'hôte abritant le serveur MySQL, s'il faut le port.
● Définir le nom de la base de données.
● Définir le nom d'utilisateur et mot de passe inscrit dans le serveur. Par défaut root et un
mot de passe vide.
● Créer un objet de type Connection.
● Créer un objet de type Statement.
● Récupérer un objet ResultSet pour les requêtes select ou un entier pour les insertions et
modifications.
 Gestion de la connexion
La classe connexion permet de gérer une connexion entre l'application java et un serveur
SGBD.
On déclare un attribut cnx de type Connection
Connection cnx = null;
 Etablir une connexion avec le serveur

Définir le pilote utilisé
Class.forName ("com.mysql.jdbc.Driver").newInstance ();

Elle peut lancer une exception si le pilote est inexistant:
ClassNotFoundException

Se connecter au serveur
try{
cnx = DriverManager.getConnection ("jdbc:mysql://hostname/dbname",
username, passwd);
}
catch(Exception e){un message d'erreur}
Où :

hostname: nom de la machine du serveur ou son adresse ip

username: nom d'utilisateur inscrit sur le serveur(par défaut root)
4
Département Informatique
POO
I4
2009-2010

dbname: nom de la base de données

Elle peut lancer une exception si l'application n'arrive pas s à se connecter au SGBD:
SQLException
 Faire des requêtes

Créer un objet de type Statement

Lancer une requête de mise à jour

Il faut prévoir de gérer l'exception
try{
Statement st = cnx.createStatement();
// Requête insertion
st.executeUpdate(requete);
}
catch(SQLException e){un message d'erreur}

Lancer une requête de sélection et récupérer les résultats
try{
Statement st = cnx.createStatement();
// Requête sélection et récupération des données
ResultSet rs=st.executeQuery(requete);
if(rs.next())
{
//affichage des données
}
else
JOptionPane.showMessageDialog(this,"impossible de trouver la
personne", "erreur", JOptionPane.ERROR_MESSAGE);
}
catch(SQLException e){un message d'erreur}
=> La classe ResultSet représente un curseur qui permet de lire les lignes renvoyées par
une requête select.
5
Téléchargement