java jdbc connection tutorial with programming example
Ce didacticiel de connexion JDBC explique les étapes de base d'une base de données avec des exemples et fournit des chaînes de connexion JDBC pour différentes bases de données:
tester votre site Web dans différents navigateurs
Dans le didacticiel précédent du Série de didacticiels JDBC , nous avons appris les composants, l'architecture et les types de pilotes dans Java Database Connectivity (JDBC).
Dans ce didacticiel, nous discuterons des étapes de connexion aux bases de données à l'aide de JDBC. Ce didacticiel vous montrera comment effectuer une connexion JDBC et effectuer des opérations de base de données. L'API JDBC agit comme une interface entre le programme Java et la base de données.
À la fin de ce didacticiel, vous pourrez écrire des programmes Java pour vous connecter aux bases de données et effectuer des opérations DB.
Ce que vous apprendrez:
Étapes de connexion JDBC
Il y a 6 étapes de base pour se connecter à JDBC. Ils sont enrôlés dans l'image ci-dessous:
# 1) Importer des packages
Tout d'abord, nous devons importer les packages existants pour les utiliser dans notre programme Java. L'importation s'assurera que les classes d'API JDBC sont disponibles pour le programme. Nous pouvons ensuite utiliser les classes et sous-classes des packages.
Indépendamment du pilote JDBC, ajoutez l'instruction d'importation suivante dans le programme Java.
import java.sql.*;
Importez les autres classes en fonction de la fonctionnalité que vous utiliserez dans le programme. Téléchargez les fichiers Jar appropriés pour la base de données que vous utiliserez dans le programme.
Se référer au tutoriel précédent pour les liens pour télécharger les fichiers Jar pour votre base de données.
JDBC API 4.0 fournit principalement 2 packages importants:
- java.sql
- javax.sql
(i) paquet java.sql
Ce package fournit des classes et des interfaces pour exécuter la plupart des fonctions JDBC telles que la création et l'exécution de requêtes SQL.
Classes / Interfaces | Description |
---|---|
DriverManager | Il fournit un service de base pour gérer un ensemble de pilotes JDBC |
GOUTTE | Il représente la valeur SQL Blob dans le programme Java |
CallableStatement | Il est utilisé pour exécuter des procédures stockées SQL |
CLOB | Il représente la valeur SQL Clob dans le programme Java |
Connexion | Il crée une connexion (session) avec une base de données spécifique |
Date | Il prend en charge le type Date SQL |
Chauffeur | Il crée une instance d'un pilote avec Driver Manager |
ParameterMetaData | C'est un objet qui peut être utilisé pour obtenir des informations sur les types et les propriétés de chaque paramètre dans un objet PreparedStatement |
Affirmation préparée | Il est utilisé pour créer et exécuter une requête paramétrée dans le programme Java |
ResultSet | Il est utilisé pour accéder au résultat ligne par ligne |
ResultSetMetaData | Il est utilisé pour obtenir les informations sur les types et les propriétés des colonnes dans un objet ResultSet |
RowId | Il représente la valeur SQL ROWID |
Savepoint | Il représente le point de sauvegarde dans la transaction |
SQLData | Il est utilisé pour mapper le type défini par l'utilisateur SQL (UDT) à une classe dans le programme Java |
SQLXML | Il représente le type XML SQL |
Déclaration | Il est utilisé pour exécuter une instruction SQL statique |
DriverPropertyInfo | Il fournit les propriétés du pilote pour établir une connexion |
SQLException | Il fournit des informations sur les erreurs de base de données |
SQLTimeoutException | C'est une sous-classe de SQLException levée lorsque le délai spécifié par l'instruction a expiré |
SQLWarning | Il s'agit d'une exception qui fournit des informations sur les avertissements d'accès à la base de données |
Struct | Il s'agit d'un mappage standard dans le programme Java pour le type structuré SQL |
(ii) paquet javax.sql
Il s'agit d'une API d'extension JDBC et fournit un accès et un traitement des données côté serveur dans le programme Java.
Classes / Interfaces | Description |
---|---|
ConnectionEvent | Il fournit des informations sur l'occurrence d'événements liés à la connexion |
CommonDataSource | C'est une interface qui définit les méthodes communes entre DataSource, XADataSource et ConnectionPoolDataSource |
ConnectionPoolDataSource | C'est une fabrique pour les objets PooledConnection |
La source de données | C'est une fabrique pour les connexions à la DataSource physique que l'objet représente |
Connexion groupée | Il est utilisé pour gérer le pool de connexions |
RowSet | Il prend en charge l'API JDBC pour le modèle de composant Java beans |
RowSetMetadata | Il contient les informations sur les colonnes d'un objet RowSet |
ConnectionEventListener | Il est utilisé pour enregistrer les événements d'objet PooledConnection |
RowSetEvent | Il génère lorsqu'un événement se produit sur un objet Rowset |
StatementEvent | Il est envoyé à tous les StatementEventListeners qui ont été enregistrés avec un PooledConnection généré |
# 2) Charger le pilote
Tout d'abord, nous devons charger / enregistrer le pilote dans le programme avant de nous connecter à la base de données. Vous ne devez l'enregistrer qu'une seule fois par base de données dans le programme.
Nous pouvons charger le pilote des 2 manières suivantes:
- Class.forName ()
- DriverManager.registerDriver ()
(i) Class.forName ()
De cette façon, le fichier de classe du pilote se charge dans la mémoire au moment de l’exécution. Il charge implicitement le pilote. Lors du chargement, le pilote s'enregistrera automatiquement auprès de JDBC.
Nom de la base de données | Nom du pilote JDBC |
---|---|
Sybase | com.sybase.jdbcSybDriver |
MySQL | com.mysql.jdbc.Driver |
Oracle | oracle.jdbc.driver.OracleDriver |
Microsoft SQL Server | com.microsoft.sqlserver.jdbc.SQLServerDriver |
MS Access | net.ucanaccess.jdbc.UcanaccessDriver |
PostgreSQL | org.postgresql.Driver |
IBM DB2 | com.ibm.db2.jdbc.net.DB2Driver |
TeraData | com.teradata.jdbc.TeraDriver |
Noter: La méthode forName () n'est valide que pour les machines virtuelles compatibles JDK.
(ii) DriverManager.registerDriver ()
DriverManager est une classe intégrée qui est disponible dans le package java.sql. Il agit comme un médiateur entre l'application Java et la base de données à laquelle vous souhaitez vous connecter. Avant de vous connecter à la base de données, vous devez enregistrer le pilote avec DriverManager. La fonction principale de DriverManager est de charger la classe de pilote de la base de données et de créer une connexion avec DB.
Registre public du vide statique Pilote (pilote) - Cette méthode enregistrera le pilote auprès du gestionnaire de pilotes. Si le conducteur est déjà inscrit, il n'effectuera aucune action.
- Il jettera SQLException si l'erreur de base de données se produit.
- Il jettera NullPointerException si le pilote est nul.
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()) DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver())
De cette manière, vous pouvez enregistrer le pilote de votre base de données en le passant en paramètre.
# 3) Établir la connexion
Après avoir chargé le pilote, l'étape suivante consiste à créer et à établir la connexion. Une fois requis, les packages sont importés et les pilotes sont chargés et enregistrés, puis nous pouvons aller pour établir une connexion à la base de données.
La classe DriverManager a la méthode getConnection, nous utiliserons cette méthode pour obtenir la connexion avec Database. Pour appeler la méthode getConnection (), nous devons passer 3 paramètres. Les 3 paramètres sont une URL de type de données de chaîne, un nom d'utilisateur et un mot de passe pour accéder à la base de données.
La méthode getConnection () est une méthode surchargée. Les 2 méthodes sont:
- getConnection (URL, nom d'utilisateur, mot de passe); - Il a 3 paramètres URL, nom d'utilisateur, mot de passe.
- getConnection (URL); - Il n'a qu'un seul paramètre. L'URL a également un nom d'utilisateur et un mot de passe.
Le tableau suivant répertorie les chaînes de connexion JDBC pour les différentes bases de données:
Base de données | Chaîne de connexion / URL de base de données |
---|---|
Sybase | jdbc: Sybase: Tds: HOSTNAME: PORT / DATABASE_NAME |
MySQL | jdbc: mysql: // HOST_NAME: PORT / DATABASE_NAME |
Oracle | jdbc: oracle: fin: @HOST_NAME: PORT: SERVICE_NAME |
Microsoft SQL Server | jdbc: sqlserver: // HOST_NAME: PORT; DatabaseName = |
MS Access | jdbc: ucanaccess: // DATABASE_PATH |
PostgreSQL | jdbc: postgresql: // HOST_NAME: PORT / DATABASE_NAME |
IBM DB2 | jdbc: db2: // HOSTNAME: PORT / DATABASE_NAME |
TeraData | jdbc: teradata: // HOSTNAME / database =, tmode = ANSI, charset = UTF8 |
Exemple:
Connection con = DriverManager.getConnection(jdbc:oracle:thin:@localhost:1521:xe,System,Pass123@)
Ici dans cet exemple,
- mince fait référence au type de pilote.
- localhost est l'endroit où la base de données Oracle s'exécute.
- 1521 est le numéro de port pour se connecter à DB.
- véhicule - SID
- Système - Nom d'utilisateur pour se connecter à la base de données Oracle.
- Pass123 @ - Mot de passe
# 4) Créer et exécuter une déclaration
Une fois la connexion établie, nous pouvons interagir avec la base de données connectée. Tout d'abord, nous devons créer l'instruction pour exécuter la requête SQL, puis exécuter l'instruction.
(i) Créer une déclaration
Nous allons maintenant créer l'objet instruction qui exécute la requête avec la base de données connectée. Nous utilisons la méthode createStatement du Connexion classe pour créer la requête.
Il existe 3 interfaces de déclaration disponibles dans le package java.sql. Ceux-ci sont expliqués ci-dessous:
une déclaration
Cette interface est utilisée pour implémenter des instructions SQL simples sans paramètre. Il renvoie l'objet ResultSet.
Statement statemnt1 = conn.createStatement();
b) Déclaration préparée
Cette interface PreparedStatement étend l'interface Statement. Donc, il a plus de fonctionnalités que l'interface Statement. Il est utilisé pour implémenter des instructions SQL paramétrées et précompilées. Les performances de l'application augmentent car elle ne compile la requête qu'une seule fois.
Il est facile de réutiliser cette interface avec un nouveau paramètre. Il prend en charge le paramètre IN. Même nous pouvons utiliser cette instruction sans aucun paramètre.
String select_query = “Select * from states where state_id = 1”; PreparedStatement prpstmt = conn.prepareStatement(select_query);
c) CallableStatement
L'interface CallableStatement étend l'interface PreparedStatement. Donc, il a plus de fonctionnalités que l'interface PreparedStatement. Il est utilisé pour implémenter une instruction SQL paramétrée qui appelle une procédure ou une fonction dans la base de données. Une procédure stockée fonctionne comme une méthode ou une fonction dans une classe. Il prend en charge les paramètres IN et OUT.
L'instance CallableStatement est créée en appelant la méthode prepareCall de l'objet Connection.
CallableStatementcallStmt = con.prepareCall('{call procedures(?,?)}');
(ii) Exécuter la requête
Il existe 4 méthodes importantes pour exécuter la requête dans l'interface Statement. Ceux-ci sont expliqués ci-dessous:
- ResultSet executeQuery (chaîne sql)
- int executeUpdate (chaîne sql)
- boolean execute (String sql)
- int [] executeBatch ()
a) ResultSet executeQuery (String sql)
La méthode executeQuery () dans l'interface Statement est utilisée pour exécuter la requête SQL et récupérer les valeurs de DB. Il renvoie l'objet ResultSet. Normalement, nous utiliserons cette méthode pour la requête SELECT.
b) executeUpdate (chaîne sql)
La méthode executeUpdate () est utilisée pour exécuter des requêtes à valeur spécifiée comme INSERT, UPDATE, DELETE (instructions DML) ou des instructions DDL qui ne renvoient rien. Surtout, nous utiliserons cette méthode pour l'insertion et la mise à jour.
logiciel de téléchargement de vidéos youtube pour pc
c) exécuter (String sql)
La méthode execute () est utilisée pour exécuter la requête SQL. Il retourne vrai s'il exécute la requête SELECT. Et ça revient faux s'il exécute une requête INSERT ou UPDATE.
d) executeBatch ()
Cette méthode est utilisée pour exécuter un lot de requêtes SQL dans la base de données et si toutes les requêtes sont exécutées avec succès, elle renvoie un tableau de décomptes de mises à jour. Nous utiliserons cette méthode pour insérer / mettre à jour la plupart des enregistrements.
# 5) Récupérer les résultats
Lorsque nous exécutons les requêtes à l'aide de la méthode executeQuery (), le résultat sera stocké dans l'objet ResultSet. L'objet ResultSet retourné ne sera jamais nul, même s'il n'y a aucun enregistrement correspondant dans la table. L'objet ResultSet est utilisé pour accéder aux données extraites de la base de données.
ResultSet rs 1= statemnt1.executeQuery(QUERY));
Nous pouvons utiliser la méthode executeQuery () pour la requête SELECT. Quand quelqu'un essaie d'exécuter la requête d'insertion / mise à jour, il lancera SQLExecption avec le message ' La méthode executeQuery ne peut pas être utilisée pour la mise à jour ».
Un objet ResultSet pointe vers la ligne actuelle dans le Resultset. Pour itérer les données dans l'objet ResultSet, appelez la méthode next () dans une boucle while. S'il n'y a plus d'enregistrement à lire, il retournera FALSE.
ResultSet peut également être utilisé pour mettre à jour les données dans DB. Nous pouvons obtenir les données de ResultSet en utilisant des méthodes de lecture telles que getInt (), getString (), getDate (). Nous devons passer l'index de la colonne ou le nom de la colonne comme paramètre pour obtenir les valeurs à l'aide des méthodes Getter.
Nous en apprendrons davantage sur ResultSet dans le prochain tutoriel.
# 6) Fermer la connexion
Enfin, nous en avons terminé avec la manipulation des données dans DB. Nous pouvons maintenant fermer la connexion JDBC. Nous devons nous assurer que nous avons fermé la ressource après l'avoir utilisée. Si nous ne les fermons pas correctement, nous risquons de nous retrouver sans connexion.
Lorsque nous fermons l'objet de connexion, les objets Statement et ResultSet seront fermés automatiquement.
conn.close();
À partir de Java 7, nous pouvons fermer automatiquement les connexions JDBC à l'aide d'un bloc try-catch. La connexion JDBC doit être ouverte entre parenthèses du bloc try. Dans le bloc try, vous pouvez effectuer les connexions à la base de données normalement comme nous le faisons.
Une fois que l'exécution quitte le bloc try, elle fermera automatiquement la connexion. Dans ce cas, nous n'avons pas besoin de fermer la connexion en appelant la méthode conn.close dans le programme Java.
try(Connection conn = DriverManager.getConnection(url, user, password)) { //database connection and operation }
Exemple de connexion Java JDBC
Dans cet exemple, vous verrez comment implémenter les 6 étapes de base pour se connecter à la base de données en utilisant JDBC dans le programme Java.
Créer une table
Avant cela, créez d'abord une table et ajoutez-y des entrées.
Voici la requête SQL pour créer une table.
create table employee_details (empNum number(10), lastName varchar(50), firstName varchar(50), email varchar(255) , deptNum number(10), salary number(10));
Création de la table «employee_details» dans Oracle DB.
Insérer des données dans une table
À l'aide des requêtes suivantes, insérez les données dans la table «employee_details».
insert into employee_details values (1001, 'Luther', 'Martin', 'ml@gmail.com', 1, 13000); insert into employee_details values (1002, 'Murray', 'Keith', 'km@gmail.com', 2, 25000); insert into employee_details values (1003, 'Branson', 'John', 'jb@gmail.com', 3, 15000); insert into employee_details values (1004, 'Martin', 'Richard', 'rm@gmail.com', 4, 16000); insert into employee_details values (1005, 'Hickman', 'David', 'dh@gmail.com', 5, 17000);
Programme Java
Téléchargez le fichier JDBC et importez-le dans le projet Java.
package com.STH.JDBC; // import sql package to use it in our program import java.sql.*; public class Sample_JDBC_Program { public static void main(String[] args) throws ClassNotFoundException, SQLException { // store the SQL statement in a string String QUERY = 'select * from employee_details'; //register the oracle driver with DriverManager Class.forName('oracle.jdbc.driver.OracleDriver'); //Here we have used Java 8 so opening the connection in try statement try(Connection conn = DriverManager.getConnection('jdbc:oracle:thin:system/pass123@localhost:1521:XE')) { Statement statemnt1 = conn.createStatement(); //Created statement and execute it ResultSet rs1 = statemnt1.executeQuery(QUERY); { //Get the values of the record using while loop while(rs1.next()) { int empNum = rs1.getInt('empNum'); String lastName = rs1.getString('lastName'); String firstName = rs1.getString('firstName'); String email = rs1.getString('email'); String deptNum = rs1.getString('deptNum'); String salary = rs1.getString('salary'); //store the values which are retrieved using ResultSet and print it System.out.println(empNum + ',' +lastName+ ',' +firstName+ ',' +email +','+deptNum +',' +salary); } } } catch (SQLException e) { //If exception occurs catch it and exit the program e.printStackTrace(); } } }
Production:
Points clés à noter:
- Tout d'abord, nous devons importer les packages que nous utiliserons dans notre programme Java pour la connexion JDBC. Nous pouvons donc utiliser les classes, sous-classes et interfaces dans les packages.
- Nous devons enregistrer ou charger le pilote avec DriverManager avant d'établir une connexion.
- Après avoir enregistré le pilote, nous pouvons établir la connexion et effectuer les opérations.
- En utilisant une interface de déclaration, nous pouvons créer et exécuter la requête SQL. Pour une simple requête SQL, nous pouvons utiliser l'interface Statement. Pour insérer / mettre à jour / supprimer, nous pouvons utiliser l'interface PreparedStatement.
- Après l'exécution de l'instruction, les résultats seront stockés dans l'objet ResultSet. Nous obtenons les résultats de l'objet ResultSet en utilisant la méthode next () pour plus d'un enregistrement.
- Une fois que nous avons terminé l'opération de base de données, nous devons fermer la connexion. Pour que la ressource soit disponible pour que d'autres puissent l'utiliser.
Questions fréquemment posées
Q # 1) Quelles sont les étapes fondamentales pour se connecter à DB en Java?
Répondre: Il y a 6 étapes de base pour se connecter à DB en Java.
Elles sont:
- Import-Package
- Charger le pilote
- Établir la connexion
- Créer et exécuter l'instruction
- Récupérer les résultats
- Fermer la connexion
Q # 2) Quelle est la différence entre les types de données BLOB et CLOB dans JDBC?
Répondre:
GOUTTE est utilisé pour contenir le type binaire de données. La taille de stockage peut varier en fonction des bases de données Exemple: images, voix, vidéo.
CLOB est utilisé pour contenir le type de caractère des données. Comme CLOB, l'espace de stockage peut varier en fonction de la base de données. Exemple: des dossiers.
Q # 3) Quelle méthode de la classe DriverManager est utilisée pour établir une connexion avec DB?
Répondre: La classe DriverManager a une méthode getConnection () qui est utilisée pour établir une connexion avec DB.
Q # 4) Quelle est la différence entre Class.forName () et DriverManager.registerDriver ()?
Répondre: Class.forName () - Il charge d'abord le pilote dans la mémoire, puis enregistre le pilote approprié auprès du gestionnaire de pilotes. Ensuite, il créera un objet du pilote pour effectuer la connexion JDBC. Il chargera le pilote explicitement.
DriverManager.registerDriver () - Il enregistre le pilote implicitement.
Q # 5) Qu'est-ce qu'une fuite de connexion?
Répondre: Cette situation se produit lorsqu'une connexion est ouverte et que vous ne l'avez pas fermée. S'il y a un bloc de code, qui ouvre la connexion et ne ferme pas la connexion. Chaque fois que ce bloc de code est exécuté, une connexion fuit du pool de connexions.
Une fois que toutes les connexions disponibles sont perdues, aucune connexion ne sera disponible et l'application se bloquera. Combien il est important d'ouvrir la connexion autant qu'il est important de fermer la connexion.
Q # 6) Est-il obligatoire de fermer la connexion?
Répondre: Si vous utilisez des versions Java inférieures à 7, vous devez fermer la connexion manuellement.
À partir des versions supérieures à Java 7, nous pouvons fermer la connexion automatiquement en ouvrant le code de connexion JDBC entre parenthèses du bloc try. Une fois que le programme quitte le bloc try, il ferme automatiquement la connexion.
Conclusion
Dans ce didacticiel, nous avons expliqué comment établir une connexion JDBC. Vous pouvez maintenant effectuer des opérations DB à l'aide de JDBC dans le programme Java. Nous avons exploré les 6 étapes de base pour se connecter à Database. Nous devons importer les packages dans notre programme Java pour l'utiliser.
Une fois que nous avons enregistré le pilote, nous pouvons établir la connexion. Nous pouvons créer et exécuter l'instruction SQL à l'aide d'une interface Statement et récupérer les résultats dans l'objet ResultSet. Comme dernière étape, nous devons fermer la connexion.
lecture recommandée
- Tutoriel Java JDBC: Qu'est-ce que JDBC (Java Database Connectivity)
- Tutoriel sur l'interface Java et les classes abstraites avec des exemples
- Gestion des transactions Java JDBC avec exemple
- JDBC DriverManager, JDBC PreparedStatement et Statement
- JDBC ResultSet: Comment utiliser Java ResultSet pour récupérer des données
- Tutoriel JAVA pour les débutants: plus de 100 tutoriels vidéo Java pratiques
- Introduction au langage de programmation Java - Tutoriel vidéo
- Test de base de données Selenium (à l'aide de WebDriver et de l'API JDBC)