Introduction to JDBC Interview Questions
JDBC (Java Database Connectivity) is a Java API used to connect and execute queries with databases. It is a crucial topic for Java developers, database engineers, and backend developers.
This guide covers 30+ JDBC interview questions ranging from basic concepts to advanced topics like connection pooling, transactions, and batch processing.
Section 1: JDBC Basics (10 Questions)
1. What is JDBC?
JDBC (Java Database Connectivity) is a Java API that enables Java applications to interact with relational databases using SQL queries.
2. What are the main components of JDBC?
- DriverManager – Manages database drivers
- Connection – Establishes a session with the database
- Statement – Executes SQL queries
- ResultSet – Stores query results
3. What are the different types of JDBC drivers?
Type | Description |
---|---|
Type 1 | JDBC-ODBC Bridge (Deprecated) |
Type 2 | Native API (Part Java, Part Native) |
Type 3 | Network Protocol (Middleware-based) |
Type 4 | Pure Java (Direct-to-DB) |
4. How do you load a JDBC driver?
Class.forName("com.mysql.jdbc.Driver"); // Older way (JDBC 3.0)
In JDBC 4.0+, drivers are auto-loaded via ServiceLoader.
5. How to establish a JDBC connection?
String url = "jdbc:mysql://localhost:3306/mydb"; String user = "root"; String password = "password"; Connection conn = DriverManager.getConnection(url, user, password);
6. What is the difference between Statement, PreparedStatement, and CallableStatement?
Type | Use Case |
---|---|
Statement | Simple SQL (no parameters) |
PreparedStatement | Parameterized SQL (prevents SQL injection) |
CallableStatement | Executes stored procedures |
7. How to execute a SELECT query in JDBC?
Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM employees"); while (rs.next()) { System.out.println(rs.getString("name")); }
8. What is a ResultSet in JDBC?
A ResultSet is a table-like object that stores the results of a SQL query.
9. How to handle transactions in JDBC?
conn.setAutoCommit(false); // Disable auto-commit try { stmt.executeUpdate("INSERT INTO users VALUES (1, 'John')"); conn.commit(); // Commit on success } catch (SQLException e) { conn.rollback(); // Rollback on failure }
10. How to close JDBC resources properly?
Use try-with-resources (Java 7+) to auto-close connections:
try (Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement()) { // JDBC operations } catch (SQLException e) { e.printStackTrace(); }
Section 2: Advanced JDBC (10 Questions)
11. What is JDBC Connection Pooling?
Connection pooling reuses database connections to improve performance (e.g., HikariCP, Apache DBCP).
12. What is a DataSource in JDBC?
A DataSource is an alternative to DriverManager
and supports connection pooling.
13. How to prevent SQL Injection in JDBC?
Use PreparedStatement instead of Statement:
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM users WHERE id = ?"); pstmt.setInt(1, userId);
14. What is Batch Processing in JDBC?
Batch processing groups multiple SQL queries into a single execution:
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO employees VALUES (?, ?)"); pstmt.setInt(1, 101); pstmt.setString(2, "Alice"); pstmt.addBatch(); // Add to batch pstmt.executeBatch(); // Execute all at once
15. What are Scrollable and Updatable ResultSets?
- Scrollable ResultSet → Can move forward/backward (
TYPE_SCROLL_INSENSITIVE
) - Updatable ResultSet → Can modify data (
CONCUR_UPDATABLE
)
16. What is JDBC RowSet?
A RowSet is a wrapper for ResultSet with additional features (disconnected mode, JavaBean support).
17. How to call a stored procedure in JDBC?
CallableStatement cstmt = conn.prepareCall("{call get_employee(?)}"); cstmt.setInt(1, empId); ResultSet rs = cstmt.executeQuery();
18. What is Metadata in JDBC?
- DatabaseMetaData → Database info (tables, schemas)
- ResultSetMetaData → ResultSet structure (columns, types)
19. What are the common JDBC Exceptions?
- SQLException – General database error
- SQLTimeoutException – Query timeout
- BatchUpdateException – Batch execution failure
20. How to improve JDBC performance?
- Use connection pooling
- Optimize SQL queries
- Use batch processing
- Fetch only required columns
People Also Ask (10 Additional Questions)
JDBC Best Practices
- Should we use
Class.forName()
in JDBC 4.0+?
No, auto-loading is supported in JDBC 4.0+. - How to handle large data in JDBC?
UsesetFetchSize()
to control row retrieval. - What is the difference between execute(), executeQuery(), and executeUpdate()?
executeQuery()
→ SELECTexecuteUpdate()
→ INSERT, UPDATE, DELETEexecute()
→ Any SQL
JDBC vs. Other Technologies
- JDBC vs. Hibernate?
- JDBC → Low-level SQL control
- Hibernate → ORM (Object-Relational Mapping)
- JDBC vs. JPA?
- JDBC → Manual SQL handling
- JPA → Higher-level abstraction (Hibernate, EclipseLink)
Troubleshooting JDBC
- How to debug JDBC connection issues?
Check:
- URL, username, password
- Firewall/network access
- Driver compatibility
- What causes “No suitable driver found” error?
- Missing JDBC driver in classpath
- Incorrect JDBC URL
Advanced JDBC Features
- Does JDBC support NoSQL databases?
Some NoSQL databases (MongoDB, Cassandra) provide JDBC-like drivers. - What is XA Datasource in JDBC?
Used in distributed transactions (JTA). - How to use JDBC with Spring Framework?
- JdbcTemplate (Simplifies JDBC operations)
- Spring Data JDBC (ORM alternative)
Conclusion
This comprehensive JDBC interview guide covers 30+ essential questions on:
✔ JDBC Basics (Connection, Statements, ResultSet)
✔ Advanced JDBC (Connection Pooling, Batch Processing)
✔ Best Practices & Troubleshooting
Next Steps:
- Practice JDBC coding examples
- Explore HikariCP for connection pooling
- Learn Spring JDBC for enterprise apps