Top 50 des questions et réponses d'entretien avec JDBC (2024)

Voici les questions et réponses d'entretien sur Java Database Connectivity (JDBC) pour les candidats débutants et expérimentés pour obtenir l'emploi de leurs rêves.

Téléchargement PDF gratuit : Questions d'entretien JDBC


1) Qu'est-ce que le JDBC ?

JDBC signifie Java Database Connectivité. JDBC est une API Java qui communique avec la base de données et exécute une requête SQL.


2) Qu'est-ce qu'un pilote JDBC et combien de pilotes JDBC sont disponibles ?

Le pilote JDBC contient des classes et des interfaces qui prennent en charge les applications et bases de données Java.

Il existe 4 types de pilotes JDBC.

  1. Pilote de type 1 ou pilote de pont JDBC-ODBC.
  2. Pilote de type 2 ou natif-API, en partie pilote Java.
  3. Pilote de type 3 ou Network Protocol, pilote Java pur.
  4. Pilote de type 4 ou pilote Java pur à protocole natif.

3) Comment puis-je me connecter MySQL ou Oracle avec Java ?

//for MySQL {
try {

Class.forName ("com.mysql.jdbc.Driver");

con=DriverManager.getConnection ("jdbc: mysql://localhost:3306/dbanme", "username", "password");

Statement st=con.createstatement ();

Resultset rs=st.executeQuery ("select * from user");

rs.next (); catch (ClassNotFoundException e) {

System.err.println ("ClassNotFoundException in get Connection," + e.getMessage()); }

catch (SQLException e) {

System.err.println ("SQLException in getConnection," + e.getMessage ()) ;}

//for oracle

{

try

{

Class.forName ("oracle.jdbc.driver.OracleDriver");

con= DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:dbname", "username", "password");

Statement st=con.createstatement();

Resultset rs=st.executeQuery("select * from user");

Rs.next();

} catch (ClassNotFoundException e) {

System.err.println("ClassNotFoundException in get Connection," +e.getMessage()); }

catch (SQLException e) {

System.err.println("SQLException in getConnection, " + e.getMessage()); } return con; }

Explication du code

Class.forName crée une instance du pilote JDBC et s'enregistre auprès de DriverManager.

La méthode getConnection() établit toujours une connexion à une base de données.

Nous devons créer un objet Statement à partir de l'objet de connexion ci-dessus. L'instruction renverra l'objet resultset. ResultSet.next () signifie si le jeu de résultats renvoie toujours une ligne.


4) Quel pilote JDBC est le pilote le plus rapide ?

Le pilote de type 4 ou protocole natif, pilote Java pur, est le pilote le plus rapide.


5) Quels sont les composants de l'API JDBC ?

Il existe quatre types de composants

  1. API JDBC
  2. Gestionnaire de pilotes JDBC
  3. Suite de tests JDBC
  4. Pont JDBC-ODBC
Questions d'entretiens chez JDBC
Questions d'entretiens chez JDBC

6) Que sont les déclarations JDBC ?

Il existe 3 types d'instructions JDBC, comme indiqué ci-dessous :

  1. Déclaration: Il exécutera SQL requête (requête SQL statique) sur la base de données.
  2. Affirmation préparée: Utilisé lorsque nous voulons exécuter une instruction SQL à plusieurs reprises. Les données d'entrée sont dynamiques et saisies au moment de l'exécution.
  3. Déclaration appelable : Utilisé lorsque nous voulons exécuter des procédures stockées.

7) Comment pouvons-nous exécuter des procédures stockées ?

Les procédures stockées peuvent être exécutées à l'aide de l'instruction JDBCcallable. Voici le code.

Connection conn = null;

CallableStatement callStmt = conn.prepareCall("{call myStoreproc(?, ?)}");

callStmt.setString(1, "abcdefg");


8) Quels sont les avantages de l’utilisation de PreparedStatement en Java ?

L'instruction préparée est utilisée pour exécuter les mêmes instructions SQL à plusieurs reprises. L'instruction préparée n'est compilée qu'une seule fois même si elle a été utilisée un nombre « n » de fois.


9) Qu'est-ce que ResultSet ?

L'interface java.sql.ResultSet désigne l'ensemble de résultats d'une requête SQL. Cela signifie qu'un curseur pointe sur une ligne d'un tableau ; il pointe avant la première ligne.


10) Quels sont les types de ResultSet ?

Il existe trois types de ResultSet disponibles. Si nous ne déclarons aucun ResultSet, cela signifie que nous appelons TYPE_FORWARD_ONLY

  1. TYPE_FORWARD_ONLY : le curseur ne peut se déplacer qu'en avant.
  2. TYPE_SCROLL_INSENSITIVE : le curseur peut avancer et reculer mais n'est pas sensible.
  3. TYPE_SCROLL_SENSITIVE : le curseur peut avancer et reculer, mais il est sensible

11) Expliquez la différence entre RowSet et ResultSet dans JDBC ?

Dans une connexion de handle ResultSet à une base de données, nous ne pouvons pas faire de Result un objet sérialisé.

En raison du problème ci-dessus, nous ne pouvons pas transmettre Resultset sur le réseau.

RowSet étend l'interface ResultSet, elle contient donc toutes les méthodes de ResultSet. RowSet est sérialisé.

Ainsi, nous pouvons transmettre Rowset d’une classe à une autre classe car il n’a aucune connexion avec la base de données.


12) Pourquoi utiliseriez-vous setAutoCommit(false) dans JDBC ?

Si vous souhaitez désactiver la validation automatique, définissez connection.setAutoCommit (false)


13) Que sont les avertissements de base de données dans JDBC et comment pouvons-nous gérer les avertissements de base de données dans JDBC ?

L'avertissement SQL ou l'avertissement de base de données est la sous-classe de la classe SQLException. Nous pouvons le gérer en utilisant la méthode getWarnings() sur Connection, Statement et ResultSet


14) Puis-je obtenir un ResultSet nul ?

Non, nous ne pouvons pas obtenir un Resultset nul. ResultSet.next() peut renvoyer null si l'enregistrement suivant ne contient pas de ligne.


15) Qu’entendez-vous par métadonnées et pourquoi les utilisons-nous ?

Les métadonnées désignent des données ou des informations sur d'autres données. Nous utilisons des métadonnées pour obtenir la version du produit de base de données, le nom du pilote, le nombre total de tables et de vues.


16) Quelle est la différence entre exécuter, executeQuery, executeUpdate dans JDBC ?

exécuter() : il peut être utilisé pour tout type de requête SQL.

executeQuery() : il peut être utilisé pour une requête de sélection.

executeUpdate() : il peut être utilisé pour modifier/mettre à jour la table.


17) Qu'est-ce que le pooling de connexions à la base de données ? Avantages de l'utilisation d'un pool de connexions ?

Le regroupement de connexions signifie que les connexions seront stockées dans le cache et que nous pourrons les réutiliser à l'avenir.

Avantage:

  1.  C'est plus rapide
  2.  Le regroupement de connexions devient plus facile à diagnostiquer et à analyser la connexion à la base de données.

18) Quelle est la fonction de la classe DriverManager ?

C'est une interface entre l'utilisateur et les pilotes. DriverManager suit toute l'activité entre une base de données et le pilote approprié.


19) Quelle est la signification des mises à jour par lots ?

Les mises à jour par lots signifient exécuter un ensemble/groupe de requêtes SQL en même temps.

Les mises à jour par lots peuvent être utilisées uniquement pour l'insertion, la mise à jour et la suppression, mais pas pour la requête de sélection.


20) Combien de packages sont disponibles dans l’API JDBC ?

Deux types de packages sont disponibles dans l'API JDBC

  1. java.sql
  2. javax.sql

21) Quel est le type de retour d'execute, d'executeQuery et d'executeUpdate ?

Le type de retour d'exécution est booléen

Le type de retour d'executeQuery est un objet ResultSet

Le type de retour de executeUpdate est int


22) L'index de l'ensemble de résultats commence par 0 ou 1 ?

L'index du jeu de résultats commence par 1.


23) Quel est le rôle de Class.forName lors du chargement des pilotes ?

Class.forName crée une instance du pilote JDBC et s'enregistre auprès de DriverManager.


24) Le pont JDBC-ODBC est multithread ou non ?

Non, JDBC-ODBC Bridge utilise des méthodes synchronisées pour sérialiser tous les appels effectués vers ODBC.


25) Quelle interface gère la gestion des transactions dans JDBC ?

L'interface de connexion gère la gestion des transactions dans JDBC. Il fournit une méthode pour commit(), rollback() etc.


26) Pourquoi l'erreur « Aucun pilote approprié » se produit ?

Aucun pilote approprié » se produit lorsque nous appelons la méthode DriverManager.getConnection,

cela peut se produire pour les raisons suivantes :

  • impossible de charger les pilotes JDBC exacts avant d'appeler la méthode getConnection.
  • Il se peut que l'URL JDBC soit invalide ou erronée.

27) Les déclarations préparées sont plus rapides. Pourquoi?

L'exécution d'une instruction préparée est plus rapide que l'exécution directe car l'instruction n'est compilée qu'une seule fois. Les instructions préparées et le pilote JDBC sont connectés les uns aux autres pendant l'exécution et il n'y a aucune surcharge de connexion.


28) Est-il possible de se connecter à plusieurs bases de données ? À l'aide d'une seule instruction, pouvons-nous mettre à jour ou extraire des données de deux, trois ou plusieurs bases de données ?

Oui, il est possible de se connecter à plusieurs bases de données en même temps, mais cela dépend du pilote spécifique.

Pour mettre à jour et extraire les données des différentes bases de données, nous pouvons utiliser l'instruction unique. Mais nous avons besoin d’un middleware pour gérer plusieurs bases de données ou une seule base de données.


29) Dites-moi la différence entre setMaxRows(int) et SetFetchSize(int) ?

setMaxRows(int) SetFetchSize(int) ?
Définit le nombre de lignes qu'un ensemble de résultats peut contenir à la fois Définit le nombre de lignes qui seront lues à partir de la base de données.

30) Parlez-moi des caractères spéciaux ?

Un caractère spécial est précédé d'un caractère d'échappement. Exemple -

SELECT NAME FROM TABLE WHERE NAME LIKE '\_%' {escape '\'}

31) Quelle est la signification de « lecture sale » dans la base de données ?

Une lecture sale signifie « lire la valeur qui peut être correcte ou non ».


32) Qu'entendez-vous par engagements en deux phases ?

La validation en deux phases est utilisée dans le processus de transaction distribuée. Si une transaction est en cours d’exécution, elle affectera plusieurs bases de données. Des validations en deux phases seront utilisées pour synchroniser toutes les bases de données les unes avec les autres.


33) Combien de systèmes de verrouillage y a-t-il dans JDBC ?

Deux types de verrouillage sont disponibles dans JDBC grâce auxquels nous pouvons gérer plusieurs utilisateurs.

Si deux utilisateurs consultent le même enregistrement, aucun verrouillage n'est effectué. Si un utilisateur met à jour un enregistrement et que le deuxième utilisateur met également à jour le même enregistrement. À ce moment-là, nous allons utiliser le verrouillage.

  1. Verrouillage optimiste : il verrouillera l'enregistrement uniquement lorsque nous allons "mettre à jour".
  2. Verrouillage pessimiste: il verrouillera l'enregistrement depuis la « sélection » pour afficher, mettre à jour et valider l'heure.

34) Quelles sont les exceptions dans JDBC ?

Il existe quatre types d'exceptions dans JDBC.

  1. Exception de mise à jour par lots
  2. Troncation des données
  3. Exception SQL
  4. Avertissement SQL

35) Donner les étapes pour se connecter à la base de données à l'aide de JDBC ?

Il existe deux façons de connecter une base de données à l'aide de JDBC

  1. Utilisation de DriverManager :

Il chargera la classe du pilote à l'aide de class.forName(driver class) et Class.forName().

Après le chargement, il passera le contrôle à DriverManager.

DriverManager.getConnection() créera la connexion pour accéder à la base de données.

  1. Utilisation de DataSource :

Pour DataSource, pas besoin d'utiliser DriverManager avec l'aide de JNDI. Il recherchera la DataSource à partir du serveur de service de noms. La méthode DataSource.getConnection() renverra l’objet Connection à la base de données.


36) Expliquez l'architecture JDBC ?

L'API JDBC prend en charge les modèles à 2 et 3 niveaux pour la base de données.

Dans le modèle à 2 niveaux, l'application Java interagit avec la source de données

Dans le modèle à 3 niveaux, les commandes sont redirigées vers un « niveau intermédiaire » de services. Après cela, les commandes sont envoyées à la source de données.


37) Quelles sont les nouvelles fonctionnalités disponibles dans JDBC 4.0 ?

Les nouvelles fonctionnalités sont

  • Chargement automatique par classe de pilote JDBC
  • Gestion améliorée des connexions
  • RowId SQL activé
  • Ensemble de données implémenté par SQL à l'aide d'annotations
  • Améliorations de la gestion des exceptions SQL
  • Prise en charge de SQL XML fichiers

38) Quels sont les packages utilisés dans JDBC ?

8 packages sont utilisés dans JDBC –

  1. sql.Driver
  2. La connexion
  3. Déclaration
  4. Affirmation préparée
  5. Déclaration Callable
  6. Ensemble de résultats
  7. ResultSetMetaDataResultSetMetaData
  8. Base de donnéesMetaData

39) Combien de RowSet sont disponibles dans JDBC ?

Deux types d'ensembles de lignes sont disponibles :

  1. Connectée – Un objet RowSet connecté se connecte instantanément à la base de données. Si l'application se termine, l'objet RowSet connecté se termine également.
  2. Coupé – Un objet RowSet déconnecté se connecte à la base de données après l'exécution de la requête requise.

40) Quelle est la signification de la connexion ?

L'interface de connexion comprend des méthodes d'interaction avec la base de données.


41) Expliquez le point de sauvegarde JDBC ?

Un point de sauvegarde représente un point auquel la transaction en cours peut revenir. Au lieu d’annuler toutes ses modifications, il peut choisir d’en annuler seulement certaines.


42) Énumérez les avantages de l’utilisation de DataSource ?

La source de données divise le travail entre l'administrateur et le programmeur/développeur.

L'administrateur crée un objet DataSource et le lie au registre JNDI. Un programmeur/développeur récupère l'objet DataSource du registre. Ensuite, il établira la connexion avec la base de données.


43) Quelle est la raison pour laquelle nous avons besoin d'un JdbcRowSet comme le wrapper autour de ResultSet ?

Nous pouvons utiliser l'objet ResultSet comme composant JavaBeans.

  • Un JdbcRowSet peut également être utilisé comme composant JavaBeans. C'est pourquoi il peut être créé et configuré au moment de la conception ou de la compilation et exécuté au moment de l'exécution.
  • Tous les objets jdbcRowSet peuvent défiler et être mis à jour.

44) De combien de façons pouvons-nous afficher un ensemble de résultats ?

Il existe 2 façons d'afficher ResultSet

  1. colonne
  2. indice de colonne.

Exemple : getInt(String columnName), getInt(int columnIndex)


45) De combien de façons pouvez-vous mettre à jour un ensemble de résultats ?

Les méthodes suivantes vous aident à mettre à jour l'ensemble de résultats

  • updateRow()
  • Supprimer la ligne()
  • rafraîchirRow()
  • annulerRowUpdates()
  • insérerRow()

46) Pourquoi devrions-nous fermer les connexions aux bases de données en Java ?

Comme bonne pratique, nous devons fermer le jeu de résultats, la déclaration et la connexion. Si la connexion provient d'un pool, à la fermeture, la connexion est renvoyée au pool pour être réutilisée. Nous le faisons dans le bloc finally{}, car si une exception se produit, nous avons toujours la possibilité de le fermer.


47) Pourquoi utilisons-nous des types de données blob dans JDBC ?

Ceux-ci sont utilisés pour stocker une grande quantité de données dans la base de données comme des images, des films, etc.


48) Comment définir l'attribut Concurrency dans ResultSet ?

Il existe deux niveaux de concurrence

  1. CONCUR_READ_ONLY – C'est uniquement pour la lecture.
  2. CONCUR_UPDATABLE - Il est à la fois lu et mis à jour.

49) Quelle est la différence entre les curseurs de base de données client et serveur ?

Le curseur côté serveur signifie que les données et les résultats sont enregistrés sur le serveur. Uniquement lorsque les données demandées sont envoyées au client.

Le curseur côté client désigne toutes les données envoyées à l'emplacement du client.


50) Comment insérer des images dans la base de données à l'aide de JDBC ?

Images dans la base de données utilisant le type de données BLOB dans lequel l'image est stockée sous forme de flux d'octets. Le code ci-dessous montre comment insérer l'image dans DB.

Connection con = null;

PreparedStatement prs = null;

InputStream inputstrm = null;

Class.forName("oracle.jdbc.driver.OracleDriver");

con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:mydb","username","yourpassword");

//localhost is your machine or hostname

//1521 is your oracle database port number

//mydb is your oracle database name.

prs = con.prepareCall("insert into emp_profile values (?,?)");

prs.setInt(1, 1223);

inputstrm = new FileInputStream(new File("emp_img.jpg"));

prs.setBinaryStream(2, inputstrm);

int count = prs.executeUpdate();

Ces questions d'entretien vous aideront également dans votre soutenance

Partager

2 Commentaires

  1. très utile pour les étudiants………..

Laissez un commentaire

Votre adresse email n'apparaitra pas. Les champs obligatoires sont marqués *