TD Java Java et les bases de données L`interface entre une base

Transcription

TD Java Java et les bases de données L`interface entre une base
TD Java
Java et les bases de données
L'interface entre une base données et un programme Java se réalise
par l'intermédiaire d'un driver JDBC ou pont ODBC-JDBC (Java
DataBase Connectivity).
En important le package "java.sql" et en installant un driver pour votre
SGBD, vous aurez la possibilité de rédiger des requêtes SQL vers une
base de données.
Nous allons utiliser le SGBDR MySQL, nous devons donc disposer d'un
driver adéquate : mm.mysql-2.0.4-bin.jar.
Nous devons installer ce driver dans un répertoire quelconque et le
référencer ce répertoire dans le CLASSPATH. Au sein d'ECLIPSE, nous
avons une autre solution :
Sélection du projet : Properties. Sélection de "Java Build Path" dans la
fenêtre centrale, sélection de "Libraries", clic sur "Add external JARs",
navigation dans le répertoire et sélection du fichier mm.mysql-2.0.4bin.jar.
Si vous avez déjà une base de données, vous pouvez démarrer MySQL.
Dans votre projet Eclipse, créez une classe et tapez le code suivant :
import java.sql.*;
public class Query1 {
public Query1()
{
String url = "jdbc:mysql://localhost:3306/film";
// film
est le nom de la BD
Connection con;
String query = "SELECT nat from director;"; // une requete
SQL
Statement stmt;
try {
Driver mySQLDriver = new org.gjt.mm.mysql.Driver();
con = DriverManager.getConnection(url,"o" ,"ol" );
// o est le login du user et ol, le mot de passe
System.out.println("Con = " + con);
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
System.out.println(rs.getString(1));
}
stmt.close();
con.close();
} catch(SQLException ex) {
System.err.println("SQLException: " +
ex.getMessage());
}
}
public static void main(String args[])
{
Query1 query1 = new Query1();
}
}
Exemple sur les requêtes INSERT
import java.sql.*;
public class QueryInsert {
public QueryInsert()
{
String url = "jdbc:mysql://localhost:3306/film";
Connection con;
String query = "INSERT INTO director VALUES(3,'Peter
Jackson','NSL');";
Statement stmt;
try {
Driver mySQLDriver = new org.gjt.mm.mysql.Driver();
con = DriverManager.getConnection(url,"o" ,"ol" );
System.out.println("Con = " + con);
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
stmt.close();
con.close();
} catch(SQLException ex) {
System.err.println("SQLException: " +
ex.getMessage());
}
}
public static void main(String args[])
{
QueryInsert query = new QueryInsert();
}
}
et UPDATE (idem pour DELETE)
import java.sql.*;
public class QueryUpdate {
public QueryUpdate()
{
String url = "jdbc:mysql://localhost:3306/film";
Connection con;
String query = "UPDATE director SET nat='NZL' WHERE
director LIKE 'Peter Jackson';";
Statement stmt;
try {
Driver mySQLDriver = new org.gjt.mm.mysql.Driver();
con = DriverManager.getConnection(url,"o" ,"ol" );
System.out.println("Con = " + con);
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
stmt.close();
con.close();
} catch(SQLException ex) {
System.err.println("SQLException: " +
ex.getMessage());
}
}
public static void main(String args[])
{
QueryUpdate query = new QueryUpdate();
}
}
Exercice
A titre d'exemple, vous allez implémenter une application Java accédant à
une base de données dont le schéma sera le suivant :
etudiant (numEtud, nomEtud, prenomEtud, filiereEtud)
filiere (numFiliere, nomFiliere)
Vous devez créer le schéma sous mysql et peupler la bd avec des instances
(au moins 2 filières dont IMN et au moins 8 étudiants, repartis sur les 2
filières).
Vous devez développer des méthodes qui vont permettre :
– l'affichage des étudiants d'une filière
– l'affichqge de l'ensemble des étudiants (toutes les filières).
– La modification du prénom d'un étudiant
– L'ajout d'un nouvelle étudiant dans une certaine filière.
– La suppression d'un étudiant d'une filière donnée.