Aller au menu - Aller au contenu

Icône Se connecter à sa BDD

Mise à jour : 17/06/2009
Difficulté : Intermédiaire Intermédiaire Creative Commons BY-NC-SA
3 526 visites depuis 7 jours, dont 572 sur ce chapitre classé 45/786
Nous avons pris le temps de modéliser et de créer notre base de données.
Il est grand temps de prendre le taureau par les cornes et de voir comment accéder à tout ceci dans un programme Java.

Inutile de préciser que savoir programmer en objets est plus que requis et que, mis à part ce point, tout sera pris à partir de ZérO. ;)

En avant !
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Faisons le point

Bon : vous avez utilisé pgAdmin jusqu'à maintenant. Le truc, c'est qu'il se passe des choses cachées, peu avouables voire carrément obscènes entre pgAdmin et PostgreSQL.

Non, je plaisante... mais il se passe effectivement des choses entre ces deux-là ! ^^
Le fait est que vous ne devriez plus faire l'amalgame entre BDD et SGBD ; par contre, vous devez encore ignorer que le SGBD effectue une connexion avec la BDD afin de pouvoir communiquer. Ceci pourrait se schématiser par un dialogue du genre :

Image utilisateur


Les ZérOs qui ont déjà installé une imprimante savent que leur machine à besoin d'un driver pour que la communication puisse se faire entre les deux acteurs ! Ici, c'est la même chose ! :waw:
pgAdmin utilise un driver pour se connecter à la base de données. Vu que les personnes qui ont développé les deux soft travaillent main dans la main, pas de souci de communication mais qu'en sera-t-il avec Java ?

En fait, avec Java, vous allez avoir besoin de ces drivers, mais pas sous n'importe quelle forme !
Afin de pouvoir vous connecter à une base de données avec Java, il vous faut un fichier .jar qui correspond au fameux pilote.
Il existe donc un fichier .jar qui permet de se connecter à une base PostgreSQL !

Est-ce que ça veut dire qu'il y a un fichier .jar par BDD ?

Tout à fait, il existe un fichier .jar pour se connecter à :
  • MySQL ;
  • SQL Server ;
  • Oracle ;
  • ...


Et si vous ne faites pas ceci, vous ne pourrez pas vous connecter !

Un bémol toutefois : vous pouvez aussi vous connecter à une BDD en utilisant les pilotes ODBC présents dans Windows, mais ceci nécessite d'installer les pilotes dans Windows et de les paramétrer dans les sources de données ODBC pour, par la suite, utiliser ces pilotes ODBC pour se connecter à la BDD dans un programme Java !

Je ne parlerai pas de cette méthode puisqu'elle ne fonctionne que pour Windows !
Mais bon, pour ceux que le sujet intéresse, allez voir par là !

D'accord, on voit bien le principe ! Mais alors... où trouve-t-on ce pilote pour Java ?

Une simple recherche sur Google comblera vos attentes avec une recherche du genre :

Image utilisateur


... pour PostgreSQL, ou :

Image utilisateur


pour MySQL...
Enfin bref, il est assez facile de trouver les pilotes JDBC convoités.
Sur la page de téléchargement des pilotes pour PostgreSQL, il y a la dernière version disponible ; j'ai pris la version JDBC4 :

Image utilisateur


La version JDBC4 offre des nouveautés et une souplesse dans l'utilisation de JDBC, mais j'avoue, je ne les connais pas trop... Vous trouverez un rapide aperçu par ici !

Bon ! Téléchargez le fichier .jar, pour ceux qui auraient la flemme de faire une recherche sur Google, c'est par ici ; et maintenant, que faire de cette archive ?

Et comment on l'utilise ?

Pour l'utilisation, nous y arrivons à grand pas, mais une question se pose encore : où mettre l'archive ?
Vous avez deux solutions :
  • la mettre dans votre projet et l'inclure au CLASSPATH ;
  • mettre l'archive de le dossier d'installation du JRE, dans le dossier "lib/ext".


Le tout est de savoir si votre application est vouée à être exportée sur différents postes, auquel cas l'approche CLASSPATH est encore la plus judicieuse (sinon, il faudra ajouter l'archive dans tous les JRE...) mais, nous, nous allons utiliser la deuxième méthode afin de ne pas surcharger nos projets !
Je vous laisse donc mettre l'archive téléchargée dans le dossier sus-mentionné. :)

Connexion ! Es-tu là ?

La base de données est prête, les tables sont créées et remplies et nous avons le driver !
Il ne nous reste plus qu'à nous connecter, ENFIN !

C'est vrai que tu auras mis le temps...

Eh, il faut ce qu'il faut ! Et encore, j'aurais pu vous faire réviser le SQL avant d'attaquer ! :diable:

Je vous autorise à créer un nouveau projet dans Eclipse avec une classe contenant une méthode public static void main(String[] args) .

Voici le code source pour obtenir une connexion :

Code : Java
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Enumeration;
import java.util.Properties;

public class Connect {

	public static void main(String[] args) {
		
		try {
			Class.forName("org.postgresql.Driver");
			System.out.println("DRIVER OK ! ");
			
			String url = "jdbc:postgresql://localhost:5432/Ecole";
			String user = "postgres";
			String passwd = "postgres";
			
			Connection conn = DriverManager.getConnection(url, user, passwd);
			System.out.println("Connection effective !");			
			
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}
}


Tout ça pour avoir une connexion ?

Oui. :-°
Nous allons détailler un peu tout ceci...
Dans un premier temps, nous avons créé une instance de l'objet Driver présent dans le fichier .jar que nous avons téléchargé tout à l'heure.
Il est inutile de créer une véritable instance de ce type d'objet ; par-là, j'entends que faire ceci :
Code : Java
1
org.postgres.Driver driver = new org.postgres.Driver();

n'est pas nécessaire. Du coup, nous utilisons la réflexivité afin d'instancier cet objet.
À ce stade, il y a comme un pont entre votre programme Java et votre BDD, mais el trafique routier n'y est pas encore autorisé ! Il faut qu'une connexion soit effective afin que votre programme et la BDD puissent communiquer. Ceci se fait avec l'autre ligne de code : Connection conn = DriverManager.getConnection(url, user, passwd); .

Nous avons au préalable défini trois String contenant respectivement :
  • l'URL de connexion ;
  • le nom de l'utilisateur ;
  • le mot de passe utilisateur.


L'URL de quoi ?

De connexion. Elle est indispensable à Java pour se connecter à n'importe quelle BDD.
Cette URL se décompose comme suit :

Image utilisateur

En vert, vous pouvez voir le début de l'URL de connexion. elle commence TOUJOURS par "jdbc:". Dans notre cas, nous utilisons PostgreSQL, la dénomination "postgresql:" suit le début de l'URL. Si vous utilisez une source de données ODBC, il faudrait avoir "jdbc:odbc:".
En fait, ceci dépend du pilote JDBC : cela permet à Java de savoir quel pilote utiliser ! On parle de protocole utilisé.

En bleu, vous trouverez la localisation de la machine physique sur le réseau ; ici, nous sommes en local, nous utilisons donc "//localhost:5432". Ah oui, le nom de la machine physique est suivi du numéro de port utilisé. ^^
En orange, pour ceux qui ne l'auraient pas deviné, il s'agit du nom de notre base de données ! ;)

Les informations en bleu et en orange dépendent du pilote JDBC utilisé. Pour en savoir plus, consultez la documentation de celui-ci ! :)


L'URL, le nom d'utilisateur, le mot de passe et le driver permettent ensemble de créer le pont de connexion et le trafic routier sur ce pont !
Donc, si vous exécutez ce code, vous aurez :

Image utilisateur


Vous n'êtes obligés de spécifier la totalité des informations pour l'URL... Mais il faudra au moins "jdbc:postgresql".


Tout ceci lève une Exception en cas de problème !


L'avantage avec les fichiers .jar comme drivers de connexion, c'est que vous n'êtes pas tenus d'initialiser le driver par réflexivité ou autre. Tout se passe en Java ! Vu qu'il y a un rappel du protocole à utiliser dans l'URL de connexion, tout est parfait et Java s'en sort tout seul !
Ne vous étonnez pas si vous ne voyez plus Class.forName("org.postgresql.Driver"); par la suite...


Bon, on arrive à se connecter. Maintenant, avant de poursuivre, un QCM vous attend ! :pirate:

Q.C.M.

Sous quelle forme se présentent les drivers JDBC ?
Comment initialise-t-on un driver JDBC dans un programme Java ?
Que faut-il au DriverManager pour établir une connexion avec la BDD ?

Statistiques de réponses au QCM

Chapitre très simple, n'est-ce pas ?
Vous savez maintenant établir une connexion avec une BDD. Nous allons maintenant voir comment faire joujou avec tout ceci !
Chapitre précédent Sommaire Chapitre suivant

Partager

12 commentaires pour "Se connecter à sa BDD"
Note moyenne : 3.34 / 4 (178 votes)
Pseudo Commentaire
Hors ligne kaci811 # Posté le 25/06/2010 à 12:36:03
Avatar
Flux RSS

bonjour je veut me connecter a postgresql sur autre machine comme ca "jdbc:postgresql://192.168.1.2:5432/BDD_SMA";
que doit je changer???(par rapport a locxalhost)
reconfigurer postgresql peut être??? répondez moi SVP c'est urgent et merci d'avance
Hors ligne 2become1 # Posté le 11/07/2010 à 15:46:48
Sm@il
Avatar

Hi Guys,
j'utilise netbeans 9.6
Essai juste d'ajouter la bibliothèque postgreSQL à ton projet:
Bibliothèque(libraries si tu utilise netbeans english) clique droit dessus->ajouter une bibliothèque->cherche la bibliothèque postgreSQL et clique sur ajouter Et recompile ton programme!
See ya

Sous Ubuntu, 99% des bugs se situent entre le clavier et la chaise de bureau...
 
Hors ligne pj074 # Posté le 02/08/2010 à 21:53:57
Avatar

Études : CNED

Il serait judicieux d'ajouter un paragraphe pour l'installation du driver sous Linux.

HMD
---HMD RULEZZ---
 
Hors ligne Dalc # Posté le 05/10/2010 à 20:11:25
Avatar

Études : IUT Havre

Merci beaucoup j'ai réussi à le faire fonctionner sans problème
J'ai par contre dû suivre ce tutoriel pour linux :)
http://doc.ubuntu-fr.org/postgresql
Hors ligne linconnue55 # Posté le 09/08/2011 à 00:56:06
Avatar

Salut à tous

SVP, ou je puisse trouver le dossier JRE pour mettre le driver

Merci.

Voir tous les commentaires