• Aucun résultat trouvé

TP2 - JDBC Table des matières Présentation Installation

N/A
N/A
Protected

Academic year: 2022

Partager "TP2 - JDBC Table des matières Présentation Installation"

Copied!
8
0
0

Texte intégral

(1)

TP2 - JDBC

Table des matières

1. Présentation 2. Installation

1. Téléchargement 2. Installation via Maven

3. Connection à la base de données Java

4. Opérations CRUD 2. Read (Select) 3. Update 4. Delete 5. TP

Présentation

// TODO

Installation

Deux choix possibles :

1. Manuellement : Télécharger la librairie et l'inclure dans le projet de développement.

2. Automatiquement : grâce au gestionnaire de projet Maven

Téléchargement

Version 42.2.17 pour Java 8 disponible sur la page https://jdbc.postgresql.org/

Lien direct : https://jdbc.postgresql.org/download/postgresql-42.2.17.jar Ajouter la librairie dans le classpath :

Dans le projet java sous IntelliJ 1. Créer un répertoire lib

2. Copier le fichier jar postgresql-42.2.17.jar

(2)

3. Sélectionner le projet Java, clic droit Open Module Settings (F4) 4. Dans la section Project Settings, sélectionner Librairies

5. Cliquer sur + et ajouter une librairie java 6. Ajouter la librairie postgresql-42.2.17.jar

7. Cliquer sur OK

Installation via Maven

Ajouter la dépendance suivante dans le fichier pom.xml :

<dependency>

<groupId>org.postgresql</groupId>

<artifactId>postgresql</artifactId>

<version>42.2.17</version>

</dependency>

La librairie est ajoutée automatiquement au classpath du projet

Connection à la base de données Java

La connection de la base de données en JDBC se fait de la manière suivante :

(3)

jdbc:postgresql:database jdbc:postgresql:/

jdbc:postgresql://host/database jdbc:postgresql://host/

jdbc:postgresql://host:port/database jdbc:postgresql://host:port/

Où :

host

Nom du serveur port

Numéro de port d'écoute du seveur. Par défaut : 5432 database

Le nom de la base de données. Par défaut : le nom du user

Pour se connecter, il faut obtenir un objet JDBC de type java.sql.Connnection. Pour se faire, utiliser la méthode DriverManager.getConnection() :

sql.PostgresConnection db = DriverManager.getConnection(url, username, password);

Exemples de connexion :

1. Avec des propriétés séparées

String url = "jdbc:postgresql://localhost/basechristophe";

Properties props = new Properties();

props.setProperty("user","christophe");

props.setProperty("password","xxxxx");

sql.PostgresConnection conn = DriverManager.getConnection(url, props);

conn.close();

2. Propriétes dans l'URL

String url = "jdbc:postgresql://localhost/basechristophe?

user=christophe&password=xxxxx";

sql.PostgresConnection conn = DriverManager.getConnection(url);

conn.close();

(4)

Pour la liste complète des propriétés de connection, consulter la page https://jdbc.postgresql.org/documentation/head/connect.html

3. Passage de paramètres

String url = "jdbc:postgresql://" + serveur + "/" + baseName;

try {

connection = DriverManager.getConnection(url, user, password );

} catch (SQLException throwables) { throwables.printStackTrace();

}

// TODO select, insert, update, delete

Opérations CRUD

CRUD est un acromyme employé en programmation BdD qui veut dire Create Read Update Delete.

Pour réaliser des opérations en JDBC, il faut deux éléments :

Une connection de type java.sql.Connection comme vu précédemment,

Un objet permettant d'exécuter des requêtes, il s'obtient de deux manières différentes : à l'aide d'un objet de type java.sql.Statement :

Statement statement = null;

try{

statement = connection.createStatement();

} catch (SQLException throwables) { throwables.printStackTrace();

}

à l'aide d'un objet de type java.sql.PreparedStatement :

PreparedStatement statement;

try{

statement = connection.prepareStatement(sqlReq);

} catch (SQLException throwables) { throwables.printStackTrace();

}

(5)

PrepareStatement. Voici des exemples pour chaque cas du CRUD.

Create (Insert)

Insertion d'une ligne dans la table ENTREPRISE : (idEntreprise = 5, nomEntreprise = "NASA") avec Statement :

Statement statement = null;

try {

statement = connection.createStatement();

String sqlReq = "insert into entreprise(identreprise, nomentreprise) values (5, 'NASA')";

int res = statement.executeUpdate(sqlReq);

if (res > 0) {

System.out.println("ligne insérée");

}

} catch(SQLException e) {

System.err.println("Erreur SQL : " + e.getLocalizedMessage());

}

avec PrepareStatement :

PreparedStatement statement;

String sqlReq = "insert into entreprise(identreprise, nomentreprise) values (?, ?)";

try {

statement = connection.prepareStatement(sqlReq);

statement.setInt(1, 5);

statement.setString(2, "NASA");

int res = statement.executeUpdate();

if (res > 0) {

System.out.println("ligne insérée");

}

} catch(SQLException e) {

System.err.println("Erreur SQL : " + e.getLocalizedMessage());

}

Read (Select)

avec Statement :

(6)

Statement statement = connection.createStatement();

ResultSet resultSet = statement.executeQuery("SELECT * FROM entreprise");

while (resultSet.next()) {

int identreprise = resultSet.getInt("identreprise");

String nomEntreprise = resultSet.getString("nomentreprise");

System.out.println(identreprise + " | " + nomEntreprise);

}

avec PrepareStatement

PreparedStatement statement;

String sqlReq = "SELECT * FROM entreprise WHERE idEntreprise = ?)";

Statement statement = connection.createStatement();

statement.setInt(1, 2);

ResultSet resultSet = statement.executeQuery();

while (resultSet.next()) {

int identreprise = resultSet.getInt("identreprise");

String nomEntreprise = resultSet.getString("nomentreprise");

System.out.println(identreprise + " | " + nomEntreprise);

}

Update

avec Statement

Statement statement = null;

try {

statement = connection.createStatement();

String sqlReq = "update entreprise set nomentreprise='NASA' where identreprise=5";

int res = statement.executeUpdate(sqlReq);

if (res > 0) {

System.out.println("ligne modifiée");

}

} catch(SQLException e) {

System.err.println("Erreur SQL : " + e.getLocalizedMessage());

}

(7)

PreparedStatement statement = null;

String sqlReq = "update entreprise set nomentreprise=? where identreprise=?";

try {

statement = connection.prepareStatement(sqlReq);

statement.setString(1, "NASE");

statement.setInt(2, 5);

int res = statement.executeUpdate();

if (res > 0) {

System.out.println("ligne modifiée");

}

} catch(SQLException e) {

System.err.println("Erreur SQL : " + e.getLocalizedMessage());

}

Delete

avec Statement

Statement statement = null;

try {

statement = connection.createStatement();

String sqlReq = "delete from entreprise where identreprise=5";

int res = statement.executeUpdate(sqlReq);

if (res > 0) {

System.out.println("ligne supprimée");

}

} catch(SQLException e) {

System.err.println("Erreur SQL : " + e.getLocalizedMessage());

}

avec PrepareStatement

PreparedStatement statement = null;

String sqlReq = "delete from entreprise where identreprise=?";

try {

statement = connection.prepareStatement(sqlReq);

(8)

statement.setInt(1, 5);

int res = statement.executeUpdate();

if (res > 0) {

System.out.println("ligne supprimée");

}

} catch(SQLException e) {

System.err.println("Erreur SQL : " + e.getLocalizedMessage());

}

Listing :

solutions.tp2.SimpleConnectionTest.java sql.PostgresConnection.java

solutions.tp2.SimpleJdbcTest

TP

Pré-requis :

TP1 : installation et configuration IntelliJ, création et manipulation de la base de donnée utilisateur Tâches à réaliser :

1. Créer un projet Java sous IntelliJ

2. Ajouter la librairie correspondant au driver JDBC PostgreSQL dans le classpath 3. Créer une classe de test qui créée une connection à la base de données

4. Déplacer le code de connection dans une classe sql.PostgresConnection qui crééra une connection de type java.sql.Connection à partir du nom de serveur, nom de la base, user et le password

5. Coder le CRUD d'Etudiant :

1. Lister (afficher) toutes les étudiants 2. Créer un nouvel étudiant

3. Modifier un étudiant

4. Supprimer un étudiant (celui créé en 7 par exemple) 6. Coder les requêtes du TP1 :

1. Afficher le Professeur responsable du stage de l’étudiant ‘etudiant1’

2. Nombre de professeur ayant participé à au moins un jury.

3. Liste des étudiant(s) ayant eu la même note que l’étudiant ‘toto'

Références

Documents relatifs

‰ Identificateur unique pour les colonnes d’une table, mais 2 colonnes dans 2 tables différentes peuvent avoir le même nom.. ‰ Le nom complet d’une colonne comprend le nom de

• Assurez-vous que tous les appareils raccordés à la Connection Unit (ex. l’onduleur) sont sur la position « OFF » et qu’un nouveau raccordement est impossible (consultez les

Dr Perron has been a family physician and a palliative care physician at CSSS de l’Énergie in Shawinigan, Que, since 2009, delivering care to patients at home and in the

 Enregistre le driver (objet driver) pour un type de SGBD particulier.  Le driver est dépendant du

In this book, we explore two connection-oriented packet-switching networks: ATM networks and multi-protocol label switched (MPLS) networks.. ATM is a legacy network that was

Écrivez un programme utilisant les JDBC pour créer les 3 tables nécessaires pour traiter les manèges, les parcs d’attractions et les liens entres eux. Réutilisez votre

(v) Using (i) to (iv) above at national levels to evaluate and develop local enterpreneurship and investment with partnership of global partners and both foreign and local

Nous voulons faire héberger nos bases de données de mesures et d'objets connectés sur le NAS.. Pour cela nous