What is JDBC Driver with example?
A JDBC (Java Database Connectivity) Driver is a software component that enables Java applications to interact with a database. It acts as a bridge between the Java application and the database, facilitating communication between them. There are four types of JDBC drivers, also known as JDBC driver types:

Table of Contents
1. Type-1 Driver (JDBC-ODBC Bridge Driver):
- Uses ODBC (Open Database Connectivity) driver to connect to the database.
- Not recommended for use in production environments due to performance issues.
2. Type-2 Driver (Native-API Driver)
- Â Uses native database APIs to connect to the database.
- Â Requires native library files to be installed on the client machine.
3. Type-3 Driver (Network Protocol Driver)
- Uses a middle-tier server to communicate with the database.
- Translates JDBC calls to the database-specific protocol.
4. Type-4 Driver (Thin Driver)
- Â Uses database-specific protocols directly to connect to the database.
- Â Pure Java driver, platform-independent, and recommended for most applications.
Key Components of a JDBC Driver
- Driver Interface: Handles communication with the database server.
- DriverManager Class: Manages a list of database drivers and establishes a connection between the application and the database.
- Connection Interface: Represents a connection with a specific database.
- Statement Interface: Used for executing a static SQL statement and returning the results.
- ResultSet Interface: Represents the result set of a database query.
Example with Picture
Here is a conceptual picture of the JDBC driver architecture:

Example
Let's illustrate the use of a JDBC driver with a simple Java program that connects to a MySQL database, retrieves data, and displays it.
1. Create a Database Table:
Before running the Java code, create a table in your database.
sql
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
age INT,
grade VARCHAR(10)
);
Java Program Using JDBC Driver:
java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCDriverExample {
public static void main(String[] args) {
String jdbcURL = "jdbc:mysql://localhost:3306/your_database";
String username = "root";
String password = "password";
Connection connection = null;
try {
// Load the JDBC driver
Class.forName("com.mysql.cj.jdbc.Driver");
// Establish a connection
connection = DriverManager.getConnection(jdbcURL, username, password);
System.out.println("Connected to the database!");
// Create a SQL query
String sql = "SELECT * FROM students";
// Create a Statement
PreparedStatement statement = connection.prepareStatement(sql);
// Execute the query
ResultSet resultSet = statement.executeQuery();
// Process the results
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
int age = resultSet.getInt("age");
String grade = resultSet.getString("grade");
System.out.println(id + ", " + name + ", " + age + ", " + grade);
}
// Close the resources
resultSet.close();
statement.close();
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
try {
if (connection != null) {
connection.close();
System.out.println("Disconnected from the database.");
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
}
Explanation of the Example
- Loading the JDBC Driver
- Class.forName(“com.mysql.cj.jdbc.Driver”); loads the MySQL JDBC driver.
- Establishing a Connection
- DriverManager.getConnection(jdbcURL, username, password); creates a connection to the database.
- Creating a Statement
- connection.prepareStatement(sql); creates a PreparedStatement for the SQL query.
- Executing the Query
- statement.executeQuery(); executes the SQL query and returns the result set.
- Processing the Results
- The ResultSet object is used to iterate over the results and print them.
- Closing the Resources
- The ResultSet, PreparedStatement, and Connection objects are closed to free up resources.