Avant Établir une connexion JDBC en Java (le front-end, c'est-à-dire votre programme Java et le back-end, c'est-à-dire la base de données), nous devrions apprendre ce qu'est précisément un JDBC et pourquoi il a vu le jour. Voyons maintenant ce que signifie exactement JDBC et nous allons le faire fonctionner à l'aide d'illustrations réelles.
Qu’est-ce que JDBC ?
JDBC est un acronyme pour Java Database Connectivity. C’est une avancée pour ODBC (Open Database Connectivity). JDBC est une spécification API standard développée afin de déplacer les données du front-end vers le back-end. Cette API se compose de classes et d'interfaces écrites en Java. Il agit essentiellement comme une interface (pas celle que nous utilisons en Java) ou un canal entre votre programme Java et les bases de données, c'est-à-dire qu'il établit un lien entre les deux afin qu'un programmeur puisse envoyer des données à partir du code Java et les stocker dans la base de données pour une utilisation future. .
Illustration: Fonctionnement de JDBC en corrélation avec le temps réel
formule de maçon
Pourquoi JDBC a-t-il vu le jour ?
Comme indiqué précédemment, JDBC est une avancée pour ODBC, ODBC étant dépendant de la plate-forme, il présentait de nombreux inconvénients. L'API ODBC a été écrite en C, C++, Python et Core Java et, comme nous le savons ci-dessus, les langages (à l'exception de Java et d'une partie de Python) dépendent de la plate-forme. Par conséquent, pour supprimer la dépendance, JDBC a été développé par un fournisseur de bases de données composée de classes et d'interfaces écrites en Java.
Étapes pour connecter l'application Java à la base de données
Vous trouverez ci-dessous les étapes expliquant comment se connecter à la base de données en Java :
Étape 1 – Importer les packages
Étape 2 – Chargez les pilotes à l’aide du Méthode forName()
Étape 3 – Enregistrez les pilotes en utilisant DriverManager
Étape 4 – Établir une connexion en utilisant l'objet de classe Connection
Étape 5 – Créer une déclaration
Étape 6 – Exécuter la requête
Étape 7 – Fermer les connexions
Connectivité de base de données Java
Discutons brièvement de ces étapes avant de les mettre en œuvre en écrivant du code approprié pour illustrer les étapes de connectivité pour JDBC.
Étape 1: Importer les packages
Étape 2: Chargement des pilotes
Pour commencer, vous devez d'abord charger le pilote ou l'enregistrer avant de l'utiliser dans le programme. L'inscription se fait une fois dans votre programme. Vous pouvez enregistrer un chauffeur de l'une des deux manières mentionnées ci-dessous :
2-A Classe.forName()
Ici, nous chargeons le fichier de classe du pilote en mémoire au moment de l'exécution. Pas besoin d'utiliser de nouveaux objets ou de créer des objets. L'exemple suivant utilise Class.forName() pour charger le pilote Oracle comme indiqué ci-dessous :
Class.forName(oracle.jdbc.driver.OracleDriver);>
2-B DriverManager.registerDriver()
DriverManager est une classe Java intégrée avec un registre de membres statique. Ici, nous appelons le constructeur de la classe du pilote au moment de la compilation. L'exemple suivant utilise DriverManager.registerDriver() pour enregistrer le pilote Oracle comme indiqué ci-dessous :
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver())>
Étape 3: Établir une connexion en utilisant le Objet de classe de connexion
Après avoir chargé le pilote, établissez les connexions comme indiqué ci-dessous :
Connection con = DriverManager.getConnection(url,user,password)>
- utilisateur : U nom de serveur à partir duquel votre invite de commande SQL est accessible.
- mot de passe: mot de passe à partir duquel l'invite de commande SQL est accessible.
- avec: C'est une référence à l'interface de connexion.
- URL : Uniform Resource Locator qui est créé comme indiqué ci-dessous :
String url = jdbc:oracle:thin:@localhost:1521:xe>
Où oracle est la base de données utilisée, Thin est le pilote utilisé, @localhost est l'adresse IP où une base de données est stockée, 1521 est le numéro de port et xe est le fournisseur de services. Les 3 paramètres ci-dessus sont de type String et doivent être déclarés par le programmeur avant d'appeler la fonction. Son utilisation peut être référencée pour former le code final.
Étape 4: Créer une déclaration
Une fois la connexion établie, vous pouvez interagir avec la base de données. Les interfaces JDBCStatement, CallableStatement et PreparedStatement définissent les méthodes qui vous permettent d'envoyer des commandes SQL et de recevoir des données de votre base de données.
L'utilisation de l'instruction JDBC est la suivante :
Statement st = con.createStatement();>
Note: Ici, con est une référence à l'interface de connexion utilisée à l'étape précédente.
Étape 5 : Exécuter la requête
Vient maintenant la partie la plus importante, à savoir l’exécution de la requête. La requête ici est une requête SQL. Nous savons désormais que nous pouvons avoir plusieurs types de requêtes. Certains d'entre eux sont les suivants :
- La requête de mise à jour/insertion d’une table dans une base de données.
- La requête pour récupérer des données.
La méthodeexecuteQuery() du Interface de relevé est utilisé pour exécuter des requêtes de récupération de valeurs de la base de données. Cette méthode renvoie l'objet de ResultSet qui peut être utilisé pour obtenir tous les enregistrements d'une table.
La méthodeexecuteUpdate(sql query) de l'interface Statement est utilisée pour exécuter des requêtes de mise à jour/insertion.
Pseudo-code :
int m = st.executeUpdate(sql); if (m==1) System.out.println('inserted successfully : '+sql); else System.out.println('insertion failed');>
Ici, sql est une requête SQL du type String :
Java
c'est en python
// This code is for establishing connection with MySQL> // database and retrieving data> // from db Java Database connectivity> /*> > *1. import --->java.sql> > *2. load and register the driver --->com.jdbc.> > *3. create connection> > *4. create a statement> > *5. execute the query> > *6. process the results> > *7. close> > */> import> java.io.*;> import> java.sql.*;> class> GFG {> > public> static> void> main(String[] args)> throws> Exception> > {> > String url> > => 'jdbc: mysql://localhost:3306/table_name '> ; // table details> > String username => 'rootgfg'> ;> // MySQL credentials> > String password => 'gfg123'> ;> > String query> > => 'select *from students'> ;> // query to be run> > Class.forName(> > 'com.mysql.cj.jdbc.Driver'> );> // Driver name> > Connection con = DriverManager.getConnection(> > url, username, password);> > System.out.println(> > 'Connection Established successfully'> );> > Statement st = con.createStatement();> > ResultSet rs> > = st.executeQuery(query);> // Execute query> > rs.next();> > String name> > = rs.getString(> 'name'> );> // Retrieve name from db> > System.out.println(name);> // Print result on console> > st.close();> // close statement> > con.close();> // close connection> > System.out.println(> 'Connection Closed....'> );> > }> }> |
>
>
Sortir :
Étape 6 : Fermeture des connexions
Nous avons donc finalement envoyé les données à l'emplacement spécifié et nous sommes maintenant sur le point de terminer notre tâche. En fermant la connexion, les objets de Statement et ResultSet seront automatiquement fermés. La méthode close() de l'interface Connection est utilisée pour fermer la connexion. Il est présenté ci-dessous comme suit :
con.close();>
Exemple:
Java
table de vérité de l'additionneur complet
// Java Program to Establish Connection in JDBC> // Importing database> import> java.sql.*;> // Importing required classes> import> java.util.*;> // Main class> class> Main {> > // Main driver method> > public> static> void> main(String a[])> > {> > // Creating the connection using Oracle DB> > // Note: url syntax is standard, so do grasp> > String url => 'jdbc:oracle:thin:@localhost:1521:xe'> ;> > // Username and password to access DB> > // Custom initialization> > String user => 'system'> ;> > String pass => '12345'> ;> > // Entering the data> > Scanner k => new> Scanner(System.in);> > System.out.println(> 'enter name'> );> > String name = k.next();> > System.out.println(> 'enter roll no'> );> > int> roll = k.nextInt();> > System.out.println(> 'enter class'> );> > String cls = k.next();> > // Inserting data using SQL query> > String sql => 'insert into student1 values(''> + name> > +> '','> + roll +> ',''> + cls +> '')'> ;> > // Connection class object> > Connection con => null> ;> > // Try block to check for exceptions> > try> {> > // Registering drivers> > DriverManager.registerDriver(> > new> oracle.jdbc.OracleDriver());> > // Reference to connection interface> > con = DriverManager.getConnection(url, user,> > pass);> > // Creating a statement> > Statement st = con.createStatement();> > // Executing query> > int> m = st.executeUpdate(sql);> > if> (m ==> 1> )> > System.out.println(> > 'inserted successfully : '> + sql);> > else> > System.out.println(> 'insertion failed'> );> > // Closing the connections> > con.close();> > }> > // Catch block to handle exceptions> > catch> (Exception ex) {> > // Display message when exceptions occurs> > System.err.println(ex);> > }> > }> }> |
>
>
Résultat après importation des données dans la base de données :