Le 50 migliori domande e risposte all'intervista JDBC (2024)

Ecco le domande e le risposte del colloquio Java Database Connectivity (JDBC) per principianti ed esperti per ottenere il lavoro dei loro sogni.

Download gratuito del PDF: domande dell'intervista JDBC


1) Cos'è il JDBC?

JDBC sta per Java Database Connectivity. JDBC è un'API Java che comunica con il database ed esegue SQLquery.


2) Cos'è un driver JDBC e quanti driver JDBC sono disponibili?

Il driver JDBC contiene classi e interfacce che aiutano l'applicazione e il database Java.

Esistono 4 tipi di driver JDBC.

  1. Driver di tipo 1 o driver bridge JDBC-ODBC.
  2. Driver di tipo 2 o nativoAPI, in parte driver Java.
  3. Driver di tipo 3 o protocollo di rete, driver Java puro.
  4. Driver di tipo 4 o protocollo nativo, driver Java puro.

3) Come posso collegarmi? MySQL o Oracle con 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; }

Spiegazione del codice

Class.forName crea un'istanza del driver JDBC e la registra con DriverManager.

Il metodo getConnection() stabilisce sempre una connessione a un database.

Dobbiamo creare un oggetto Statement dall'oggetto connessione sopra. L'istruzione restituirà l'oggetto del set di risultati. ResultSet.next () significa Se il set di risultati sta ancora restituendo una riga.


4) Quale driver JDBC è il driver più veloce?

Il driver di tipo 4 o protocollo nativo, driver Java puro, è il driver più veloce.


5) Quali sono i componenti dell'API JDBC?

Esistono quattro tipi di componenti

  1. API JDBC
  2. Gestore driver JDBC
  3. Suite di test JDBC
  4. Ponte JDBC-ODBC
Domande per l'intervista JDBC
Domande per l'intervista JDBC

6) Quali sono le dichiarazioni JDBC?

Esistono 3 tipi di dichiarazioni JDBC, come indicato di seguito:

  1. dichiarazione: Verrà eseguito SQL query (query SQL statica) sul database.
  2. Discorso preparato: Utilizzato quando vogliamo eseguire ripetutamente l'istruzione SQL. I dati di input sono dinamici e vengono immessi in fase di esecuzione.
  3. Dichiarazione richiamabile: Utilizzato quando vogliamo eseguire procedure memorizzate.

7) Come possiamo eseguire le procedure memorizzate?

Le procedure memorizzate possono essere eseguite utilizzando l'istruzione JDBCcallable. Ecco il codice.

Connection conn = null;

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

callStmt.setString(1, "abcdefg");


8) Quali sono i vantaggi dell'utilizzo di PreparedStatement in Java?

L'istruzione preparata viene utilizzata per eseguire ripetutamente le stesse istruzioni SQL. L'istruzione preparata viene compilata una sola volta anche se è stata utilizzata un numero "n" di volte


9) Cos'è ResultSet?

L'interfaccia java.sql.ResultSet indica il set di risultati di una query SQL. Significa che un cursore punta su una riga di una tabella; punta a prima della prima riga.


10) Quali sono i tipi di ResultSet?

Sono disponibili tre tipi di ResultSet. Se non dichiariamo alcun ResultSet significa che stiamo chiamando TYPE_FORWARD_ONLY

  1. TYPE_FORWARD_ONLY: il cursore può spostarsi solo in avanti.
  2. TYPE_SCROLL_INSENSITIVE: il cursore può spostarsi avanti e indietro ma non è sensibile.
  3. TYPE_SCROLL_SENSITIVE: il cursore può spostarsi avanti e indietro, ma è sensibile

11) Spiegare la differenza tra RowSet e ResultSet in JDBC?

In una connessione con handle ResultSet a un DB, non è possibile rendere Result un oggetto serializzato.

A causa del problema di cui sopra, non è possibile trasmettere Resultset attraverso la rete.

RowSet estende l'interfaccia ResultSet, quindi contiene tutti i metodi di ResultSet. RowSet è serializzato.

Quindi, possiamo passare Rowset da una classe a un'altra classe perché non ha alcuna connessione con il database.


12) Perché dovresti utilizzare setAutoCommit(false) in JDBC?

Se desideri disattivare il commit automatico, imposta Connection.setAutoCommit(false)


13) Cosa sono gli avvisi del database in JDBC e come possiamo gestire gli avvisi del database in JDBC?

L'avviso SQL o l'avviso del database è la sottoclasse della classe SQLException. Possiamo gestirlo utilizzando il metodo getWarnings() su Connection, Statement e ResultSet


14) Posso ottenere un ResultSet nullo?

No, non possiamo ottenere un set di risultati nullo. ResultSet.next() può restituire null se il record successivo non contiene una riga.


15) Cosa intendi per metadati e perché li utilizziamo?

Per metadati si intendono dati o informazioni su altri dati. Utilizziamo i metadati per ottenere la versione del prodotto del database, il nome del driver, il numero totale di tabelle e visualizzazioni.


16) Qual è la differenza tra eseguire, eseguireQuery, eseguireUpdate in JDBC?

eseguire(): può essere utilizzato per qualsiasi tipo di query SQL.

eseguireQuery(): può essere utilizzato per selezionare la query.

eseguireUpdate(): può essere utilizzato per modificare/aggiornare la tabella.


17) Cos'è il pooling delle connessioni al database? Vantaggi dell'utilizzo di un pool di connessioni?

Il pooling delle connessioni significa che le connessioni verranno archiviate nella cache e potremo riutilizzarle in futuro.

Vantaggio:

  1.  È più veloce
  2.  Il pool di connessioni diventa più semplice da diagnosticare e analizzare la connessione al database.

18) Qual è la funzione della classe DriverManager?

È un'interfaccia tra utente e conducenti. DriverManager tiene traccia di tutta l'attività tra un database e il driver appropriato.


19) Qual è il significato degli aggiornamenti batch?

Gli aggiornamenti batch implicano l'esecuzione di un set/gruppo di query SQL tutte in una volta.

Gli aggiornamenti batch possono essere utilizzati solo per l'inserimento, l'aggiornamento e l'eliminazione ma non per la query di selezione.


20) Quanti pacchetti sono disponibili nell'API JDBC?

Nell'API JDBC sono disponibili due tipi di pacchetti

  1. java.sql
  2. javax.sql

21) Qual è il tipo di ritorno diexecute,executeQuery edexecuteUpdate?

Il tipo restituito di esecuzione è booleano

Il tipo restituito di eseguiteQuery è l'oggetto ResultSet

Il tipo restituito di eseguiteUpdate è int


22) L'indice del set di risultati inizia con 0 o 1?

L'indice del set di risultati inizia con 1.


23) Qual è il ruolo di Class.forName durante il caricamento dei driver?

Class.forName crea un'istanza del driver JDBC e la registra con DriverManager.


24) Il Bridge JDBC-ODBC è multi-thread o no?

No, JDBC-ODBC Bridge utilizza metodi sincronizzati per serializzare tutte le chiamate effettuate a ODBC.


25) Quale interfaccia gestisce la gestione delle transazioni in JDBC?

L'interfaccia di connessione gestisce la gestione delle transazioni in JDBC. Fornisce il metodo per commit (), rollback () ecc.


26) Perché si verifica l'errore "Nessun driver adatto"?

Nessun driver adatto" si verifica quando chiamiamo il metodo DriverManager.getConnection,

può verificarsi a causa dei seguenti motivi:

  • impossibile caricare i driver JDBC esatti prima di chiamare il metodo getConnection.
  • Potrebbe essere un URL JDBC non valido o errato.

27) Le dichiarazioni preparate sono più veloci. Perché?

L'esecuzione dell'istruzione preparata è più veloce dell'esecuzione diretta perché l'istruzione viene compilata una sola volta. Le istruzioni preparate e il driver JDBC sono collegati tra loro durante l'esecuzione e non vi sono costi di connessione.


28) È possibile connettersi a più database? Usando una singola istruzione possiamo aggiornare o estrarre dati da due o tre o più database?

Sì, è possibile connettersi a più database contemporaneamente, ma dipende dal driver specifico.

Per aggiornare ed estrarre i dati dai diversi database possiamo utilizzare la singola istruzione. Ma abbiamo bisogno di un middleware per gestire più database o un singolo database.


29) Dimmi la differenza tra setMaxRows(int) e SetFetchSize(int)?

setMaxRows(int) SetFetchSize(int)?
Definisce quante righe può contenere un set di risultati alla volta Definisce il numero di righe che verranno lette dal database.

30) Mi parli di personaggi speciali?

Un carattere speciale è preceduto da un carattere di escape. Esempio -

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

31) Qual è il significato di “lettura sporca” nel database?

Lettura sporca significa "leggere il valore che potrebbe essere corretto o potrebbe non essere corretto".


32) Cosa intendi per commit a due fasi?

Il commit a due fasi viene utilizzato nel processo di transazione distribuita. Se una transazione è in esecuzione e influenzerà più database. Verranno utilizzati commit in due fasi per sincronizzare tutti i database tra loro.


33) Quanti sistemi di chiusura ci sono in JDBC?

In JDBC sono disponibili due tipi di blocco grazie ai quali possiamo gestire più di un utente.

Se due utenti visualizzano lo stesso record, non viene effettuato alcun blocco. Se un utente sta aggiornando un record e anche il secondo utente sta aggiornando lo stesso record. A quel punto, utilizzeremo il blocco.

  1. Blocco ottimistico: bloccherà il record solo quando andremo ad “aggiornare”.
  2. Blocco pessimistico: bloccherà il record dalla “seleziona” per visualizzare, aggiornare e confermare il tempo.

34) Quali sono le eccezioni in JDBC?

Esistono quattro tipi di eccezioni in JDBC.

  1. Eccezione batchUpdate
  2. Troncamento dei dati
  3. Eccezione SQL
  4. Avviso SQL

35) Fornire passaggi per connettersi al DB utilizzando JDBC?

Esistono due modi per connettere il database utilizzando JDBC

  1. Utilizzando DriverManager:

Caricherà la classe del driver con l'aiuto di class.forName(classe driver) e Class.forName().

Dopo il caricamento passerà il controllo a DriverManager.

DriverManager.getConnection() creerà la connessione per accedere al database.

  1. Utilizzando DataSource:

Per DataSource, non è necessario utilizzare DriverManager con l'aiuto di JNDI. Cercherà l'origine dati dal server del servizio di denominazione. Il metodo DataSource.getConnection() restituirà l'oggetto Connection al DB.


36) Spiegare l'architettura JDBC?

L'API JDBC supporta sia i modelli a 2 che a 3 livelli per il database.

Nel modello a 2 livelli l'applicazione Java interagisce con l'origine dati

Nel modello a 3 livelli i comandi vengono reindirizzati a un “livello intermedio” di servizi. Successivamente i comandi vengono inviati all'origine dati.


37) Quali sono le nuove funzionalità disponibili in JDBC 4.0?

Le nuove funzionalità sono

  • Caricamento automatico per classe driver JDBC
  • Gestione avanzata delle connessioni
  • RowId SQL abilitato
  • Set di dati implementato da SQL utilizzando Annotazioni
  • Miglioramenti alla gestione delle eccezioni SQL
  • Supporta SQL XML file

38) Quali sono i pacchetti utilizzati in JDBC?

In JDBC vengono utilizzati 8 pacchetti:

  1. sql.Driver
  2. Connessione
  3. dichiarazione
  4. Discorso preparato
  5. CallableStatement
  6. Set di risultati
  7. RisultatoSetMetaData
  8. DatabaseMetaDati

39) Quanti RowSet sono disponibili in JDBC?

Sono disponibili due tipi di set di righe:

  1. collegato – Un oggetto RowSet connesso si connette istantaneamente al database. Se l'applicazione termina, termina anche l'oggetto RowSet connesso.
  2. Disconnected – Un oggetto RowSet disconnesso si connette al database dopo l'esecuzione della query richiesta.

40) Qual è il significato di connessione?

L'interfaccia di connessione è costituita da metodi per l'interazione con il database.


41) Spiegare il punto di salvataggio JDBC?

Un punto di salvataggio rappresenta un punto a cui è possibile ripristinare la transazione corrente. Invece di ripristinare tutte le modifiche apportate, può scegliere di ripristinarne solo alcune.


42) Elencare i vantaggi derivanti dall'utilizzo di DataSource?

L'origine dati divide il lavoro tra amministratore e programmatore/sviluppatore.

L'amministratore crea un oggetto DataSource e lo collega al registro JNDI. Un programmatore/sviluppatore recupera l'oggetto DataSource dal registro. Quindi stabilirà la connessione con il database.


43) Qual è il motivo per cui abbiamo bisogno di un JdbcRowSet come il wrapper attorno a ResultSet?

Possiamo utilizzare l'oggetto ResultSet come componente JavaBeans.

  • È possibile utilizzare anche un JdbcRowSet come componente JavaBeans. Ecco perché può essere creato e configurato in fase di progettazione o compilazione ed eseguito in fase di esecuzione.
  • Tutti gli oggetti jdbcRowSet sono scorrevoli e aggiornabili.

44) In quanti modi possiamo visualizzare un set di risultati?

Esistono 2 modi per visualizzare ResultSet

  1. colonna
  2. indice di colonna.

Esempio: getInt(String nomecolonna), getInt(int indicecolonna)


45) In quanti modi puoi aggiornare un set di risultati?

I seguenti metodi ti aiutano ad aggiornare il set di risultati

  • aggiornamentoRiga()
  • eliminaRiga()
  • aggiornaRiga()
  • cancelRowUpdates()
  • inserisciRiga()

46) Perché dovremmo chiudere le connessioni al database in Java?

Come best practice, dobbiamo chiudere il set di risultati, l'istruzione e la connessione. Se la connessione proviene da un pool, alla chiusura la connessione viene rimandata al pool per essere riutilizzata. Lo stiamo facendo nel blocco last{}, perché se si verifica un'eccezione, abbiamo ancora la possibilità di chiuderla.


47) Perché utilizziamo i tipi di dati blob in JDBC?

Questi vengono utilizzati per archiviare una grande quantità di dati nel database come immagini, filmati, ecc.


48) Come impostare l'attributo Concurrency in ResultSet?

Esistono due livelli di concorrenza

  1. CONCUR_READ_ONLY – È solo per la lettura.
  2. CONCUR_UPDATABLE - È valido sia per la lettura che per l'aggiornamento.

49) Qual è la differenza tra i cursori del database client e server?

Il cursore lato server indica che i dati e i risultati vengono salvati sul server. Solo quando i dati richiesti vengono inviati al cliente.

Il cursore lato client indica tutti i dati inviati alla posizione del client.


50) Come si inseriscono le immagini nel database utilizzando JDBC?

Immagini nel database che utilizzano il tipo di dati BLOB in cui l'immagine è archiviata come flusso di byte. Il codice seguente mostra come inserire l'immagine nel 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();

Queste domande del colloquio ti aiuteranno anche nel tuo viva(orale)

Condividi

Commenti

  1. molto utile per gli studenti………..

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *