Table of contents
1.
Introduction
2.
What is JDBC (Java Database Connectivity)?
3.
Components Of JDBC
3.1.
JDBC API
3.2.
JDBC DriverManager
3.3.
JDBC Test Suite
3.4.
JDBC ODBC Bridge Driver
4.
JDBC Architecture
4.1.
Java Applications
4.2.
JDBC API
4.3.
JDBC DriverManager
4.4.
JDBC Drivers
5.
Two-Tier vs Three-Tier Models in JDBC Architecture
5.1.
Two-Tier Architecture
5.1.1.
Structure
5.1.2.
Key Features
5.1.3.
Real-World Example
5.1.4.
Advantages
5.1.5.
Disadvantages
5.2.
Three-Tier Architecture
5.2.1.
Structure
5.2.2.
Key Features
5.2.3.
Real-World Example
5.2.4.
Advantages
5.2.5.
Disadvantages
6.
JDBC Example
7.
Working Of JDBC
7.1.
Loading a Driver
7.2.
Establishing Connection
7.3.
Creating Statement Object
7.4.
Executing Statements
7.5.
Getting Results
7.6.
Closing Database Connection
8.
Purpose of JDBC 
8.1.
Key Reasons to Use JDBC in Java
9.
The Need for JDBC in Java Applications
10.
How JDBC Solves the Problem
10.1.
How JDBC Works
10.2.
Real-Life Example: Bank Transactions
11.
Applications of JDBC in Java Development
11.1.
1. Banking Systems
11.2.
2. E-commerce Platforms
11.3.
3. Inventory Management Systems
11.4.
4. Web Applications
11.5.
5. Student Management Systems
12.
Frequently Asked Questions
12.1.
Is JDBC the same as SQL?
12.2.
What are the JDBC types?
12.3.
Why is JDBC used?
12.4.
Why do we need JDBC?
12.5.
Name a few interfaces in JDBC.
12.6.
Which classes are available in the JDBC API?
12.7.
What is the importance of JDBC DriverManager?
13.
Conclusion
Last Updated: May 30, 2025
Easy

Introduction to JDBC

Author ANKIT KUMAR
0 upvote
Career growth poll
Do you think IIT Guwahati certified course can help you in your career?

Introduction

The Java Database Connectivity (JDBC) is a Java API (Application Programming Interface) that is responsible for connecting Java applications with the database. The JDBC serves as a bridge between the Java application and the databases like Oracle, MySQL, etc. We can perform many SQL operations in the Java application with the help of JDBC. We can execute a query, fetch results, and update the data in the databases. There are various classes and interfaces in the JDBC that make the task of a programmer very simple to work with a database.

Introduction to JDBC

Must Read, Multithreading in java

What is JDBC (Java Database Connectivity)?

JDBC (Java Database Connectivity) is an API in Java that allows applications to connect and interact with databases. It provides a standard interface to send SQL queries, update records, and retrieve data from databases, supporting various database management systems. Using JDBC, developers can establish connections, execute queries, and manage transaction controls directly from Java applications. It plays a crucial role in building data-driven applications and is commonly used in enterprise-level software for efficient database communication.

Components Of JDBC

There are four main components of JDBC that are used for interacting with the Database.

JDBC API

It is one of the most important components of the Java Database Connectivity (JDBC). It can be thought of as a collection of Java classes and interfaces. It contains usable code that makes the task of connecting with the database much easier. It contains two popular packages.

  • java.sql.*;
  • javax.sql.*;

JDBC DriverManager

The JDBC Driver Manager manages a list of database drivers.

  • It matches connection requests from the java application with the proper database driver using communication sub-protocol.
  • The first driver that recognises a certain subprotocol under the JDBC will be used to establish a database connection.

JDBC Test Suite

The main use of the JDBC test suite is to test the operations such as insertion, deletion, updating being performed by JDBC Drivers. 

JDBC ODBC Bridge Driver

The JDBC-ODBC Bridge facilitates applications written in the Java programming language to use the JDBC API with many existing ODBC drivers. The main function of this driver is to connect the database drivers to the database. As per Oracle, it has been removed since JDK 8.

JDBC Architecture

The entire JDBC architecture is best depicted by the picture below:

JDBC Architecture

The architecture of JDBC consists of:

Java Applications

It can be either a Java applet or a servlet that has to perform certain data-related tasks. For doing so, it must be able to communicate with the data present in the database.

JDBC API

It contains various classes and interfaces that help us to execute SQL queries. Some of the highly popular JDBC API classes are:

  • DriverManager class
  • Clob class
  • Blob class
  • Types class

Similarly, some popular JDBC API interfaces are:

  • Driver interface
  • Connection interface
  • Statement interface
  • PreparedStatement
  • CallableStatement interface
  • ResultSet interface
  • ResultSetMetaData interface
  • DatabaseMetaData interface
  • RowSet interface

JDBC DriverManager

It is a very crucial component of the JDBC. The main work of the DriverManager is to load a specific driver for a database as various databases may have a different driver. The driver manager ensures that the correct driver is chosen for the database we are interacting with and is returned to the application.

JDBC Drivers

It is one of the most crucial parts of the entire JDBC. A JDBC Driver is a software component that enables a Java application to interact with a database.

The important functionalities of the JDBC driver are:

  • It handles the communications with the database server.
  • Instead of directly creating a Driver object, we use the DriverManager object to deal with the drivers.
  • It also abstracts the details associated with working with the Driver objects.

Two-Tier vs Three-Tier Models in JDBC Architecture

In Java applications using JDBC, there are two main types of architecture: Two-Tier Architecture and Three-Tier Architecture. These models define how the Java application communicates with the database and how responsibilities are divided across different layers.

Two-Tier Architecture

In a two-tier architecture, the Java application directly interacts with the database. The user interface and database logic are both handled on the client side.

Structure

Client Application (UI + Logic)  ->  Database

Key Features

  • The client sends SQL queries directly to the database using JDBC.
     
  • The database returns the result directly to the client.
     
  • Simple and suitable for small applications.

Real-World Example

A desktop-based inventory management tool where the software is installed on each computer and connects directly to the database using JDBC.

Advantages

  • Easy to implement.
     
  • Faster communication due to direct interaction.

Disadvantages

  • Not scalable for large systems.
     
  • Difficult to manage if many users connect simultaneously.

Three-Tier Architecture

In a three-tier architecture, the Java application communicates with a middle layer (usually a server), which then connects to the database. This model separates the user interface, business logic, and data storage.

Structure

Client (UI)  ->  Application Server (Business Logic)  ->  Database

Key Features

  • The client sends requests to the application server.
     
  • The server processes the request and interacts with the database via JDBC.
     
  • The server sends the results back to the client.

Real-World Example

An online banking system where users access services via a web application, and all processing is done on the backend server.

Advantages

  • Scalable and secure.
     
  • Easier to maintain and update.
     
  • Business logic is centralized.

Disadvantages

  • Slightly complex setup.
     
  • Needs more resources to manage the middle layer.
     
  • Would you like me to create a visual diagram for these architectures?

JDBC Example

import java.sql.*;
public class JDBCExample {
    public static void main(String a[]) {
        Connection conn = null;
        String url = "jdbc:mysql://localhost:3306/";
        String dbName = "CodingNinjas";
        String driver = "com.mysql.jdbc.Driver";
        String userName = "Ankit";
        String password = "no";
        try {
            Class.forName(driver).newInstance();

            // establish connection
            Connection conn_obj = DriverManager.getConnection(url + dbName, userName, password);

            // create a statement
            Statement st = conn_obj.createStatement();

            //result is returned as ResultSet
            ResultSet rs = st.executeQuery("SELECT * from Ninjas");
            System.out.println("Results");

            // iterate and print data
            while (rs.next()) {
                String data = rs.getString(1);
                System.out.println(data);
            }
            st.close();
        } catch (Exception e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
    }
}
You can also try this code with Online Java Compiler
Run Code

 

Also see, Hashcode Method in Java

Working Of JDBC

The Java Database Connectivity(JDBC) helps in making the connection between the database and the java application. After that, we are able to perform SQL-related tasks. Let us analyse each and every process involved in the working of the JDBC.

Loading a Driver

A program can load the JDBC Drivers at any time explicitly. Whenever the connection is to be made, the driver is loaded.

Example: loading the Oracle Driver.

Class.forName(“oracle.jdbc.driver.OracleDriver”);

The above function is used to load the driver class. The name of the driver class has to be passed as a String.

Establishing Connection

  • When getConnection() is called, the DriverManager will attempt to locate a suitable driver from amongst those loaded at initialisation and those loaded explicitly.
  • Syntax:  DriverManager.getConnection(url, user, password)
  • The getConnection() method of the DriverManager class is used to make a connection with the database url.
  • url: unique database url.
  • user: database user name.
  • password: database password.
  • The getConnection() method returns Connection Object if the connection is successful, otherwise null.

Creating Statement Object

Whenever a connection is established, then we can interact with the database. The connection interface defines methods for interacting with the database. It instantiates a Statement by using the createStatement() method.

Example: 

Statement st = con.createStatement();


You can also use online java compiler for compile and run the code for good practice.

Executing Statements

To execute the statement query, there are three popular methods:

  • execute(): returns boolean value.
  • executeQuery(): returns the result of the query in the form of the ResultSet object.
  • executeUpdate(): returns the number of rows affected by the execution of the query.

Getting Results

ResultSet object can be obtained as a returned object by executeQuery() method of the Prepared Statement. This object can be used to extract the row's values. It's next() method sets the pointer to the first row, and getX() methods can be used to get different types of data from the result set.

Example:

while( rs.next() ) {
  String data = rs.getString(1);
  System.out.println( data );
}

Closing Database Connection

The connection object has a method called close() to close the connection.

Example:

con_obj.close()

Purpose of JDBC 

JDBC (Java Database Connectivity) is a Java API that allows Java applications to connect and interact with relational databases. It provides a standard way to send SQL queries and receive results, making database communication simple and consistent.

Key Reasons to Use JDBC in Java

JDBC allows developers to connect any Java application to a wide variety of databases like MySQL, Oracle, and PostgreSQL.

It removes the need to write long, complex code every time a developer wants to run SQL queries or fetch data.

JDBC is essential for building real-world applications like e-commerce systems, banking software, and inventory management tools, where data is frequently read, written, and updated.

Without JDBC, Java developers would have to write custom code for every database operation, which increases development time and errors. JDBC offers a ready-to-use and well-tested solution for handling common database tasks.

The Need for JDBC in Java Applications

In real-life scenarios like online banking, a Java application may need to:

  • Retrieve a user's past transactions
     
  • Update account balances after fund transfers
     
  • Generate monthly statements
     
  • Writing custom code for each of these tasks would be inefficient and time-consuming. If the logic changes or if the database system is upgraded, the custom code might break or require updates.


JDBC solves this problem by:

  • Providing a consistent and simple API to interact with different databases
     
  • Allowing developers to focus on business logic rather than low-level database connections
     
  • Making it easier to manage database errors and exceptions
     

Thus, JDBC becomes a must-have tool in any Java-based application that deals with data storage and retrieval.

How JDBC Solves the Problem

JDBC provides a set of predefined classes and interfaces that handle all the details of connecting to a database and executing SQL commands. It simplifies tasks like:

  • Opening a connection to the database
     
  • Creating and executing SQL statements (INSERT, SELECT, UPDATE, DELETE)
     
  • Reading the result set
     
  • Closing the database connection
     

Key Features:

  • Uses DriverManager to connect to databases
     
  • Uses Statement and PreparedStatement to send SQL queries
     
  • Uses ResultSet to read returned data
     

Benefits:

  • Saves development time
     
  • Improves code readability and maintainability
     
  • Makes database code more reliable and secure
     

JDBC removes the burden of writing low-level database code and offers a clean way to perform all common database tasks.
 

How JDBC Works

JDBC works as a bridge between a Java application and a relational database. Here’s how it functions:

The Java application calls the JDBC API

  • JDBC uses the appropriate driver (e.g., MySQL JDBC driver) to connect to the database
     
  • SQL queries are sent from the Java application to the database
     
  • The database processes the queries and sends results back through JDBC
     

The Java application reads and processes the results
 

Main Components:
 

  • DriverManager: Manages a list of database drivers
     
  • Connection: Establishes a session with the database
     
  • Statement / PreparedStatement: Sends SQL queries
     
  • ResultSet: Holds the results of queries
     

These components work together to make database operations seamless.

Real-Life Example: Bank Transactions

Imagine a bank employee using a desktop application to view recent transactions of a customer. The employee doesn’t write SQL queries. Instead, the application handles everything behind the scenes.

Here’s what happens:

  • The employee enters the customer ID in the system.
     
  • The Java application calls a method like getTransactions(customerId).
     
  • This method uses JDBC to connect to the bank’s database.
     
  • A SQL query like SELECT * FROM transactions WHERE customer_id = ? runs in the background.
     
  • The data is returned and shown in a neat table on the screen.
     
  • The employee gets the information quickly, and the developer doesn't have to write custom logic every time. JDBC made it possible by simplifying the way Java talks to databases.

Applications of JDBC in Java Development

JDBC is widely used in Java applications that require interaction with relational databases. It provides a simple and consistent way to connect, query, and update data, making it ideal for real-world use across many industries.

1. Banking Systems

Use Case: Accessing and managing customer accounts and transaction records.

JDBC allows banking software to securely retrieve and update transaction details, balances, and account statements in real-time. For example, when a customer checks their recent transactions, JDBC is used behind the scenes to connect to the bank's database and fetch the relevant records instantly.

2. E-commerce Platforms

Use Case: Managing product listings, orders, and customer data.

E-commerce websites use JDBC to store product details, process customer orders, and handle user logins. Whenever a customer adds a product to the cart or places an order, JDBC helps the Java application insert and retrieve this data from the backend database.

3. Inventory Management Systems

Use Case: Tracking stock levels and managing warehouse data.

JDBC enables inventory systems to connect to databases that store item quantities, supplier details, and reorder levels. Whenever stock is added or removed, the Java application uses JDBC to update these changes in the database, ensuring accurate inventory tracking.

4. Web Applications

Use Case: Rendering dynamic content based on database records.

Web-based Java applications often rely on JDBC to display dynamic data like blog posts, news feeds, or user dashboards. JDBC fetches data from the database, and the Java web server uses it to generate updated HTML content for users in real-time.

5. Student Management Systems

Use Case: Performing CRUD (Create, Read, Update, Delete) operations on student records.

Schools and universities use student management applications built in Java, where JDBC helps in handling student registration, grades, and attendance data. For instance, when a new student is added, JDBC inserts their details into the database with just a few lines of code.

Frequently Asked Questions

Is JDBC the same as SQL?

No, JDBC is not the same as SQL. JDBC is a Java API for connecting and executing SQL queries on a database from Java applications.

What are the JDBC types?

The four JDBC driver types are: Type 1 (JDBC-ODBC bridge), Type 2 (Native-API), Type 3 (Network Protocol), and Type 4 (Thin driver).

Why is JDBC used?

JDBC is used to connect Java applications with databases, allowing execution of SQL queries, data retrieval, updates, and database management from Java code.

Why do we need JDBC?

The JDBC helps us to establish a connection with the data source (database) and perform various SQL-related tasks.

Name a few interfaces in JDBC.

Some popular interfaces are the Driver interface, Statement interface, Connection interface, ResultSet interface, etc.

Which classes are available in the JDBC API?

DriverManager class, Blob class, Clob class, and Types class.

What is the importance of JDBC DriverManager?

The main work of the DriverManager is to load a specific driver for a database, as various databases may have different drivers.

Conclusion

The Java Database Connectivity (JDBC) is a Java API (Application Programming Interface) that is responsible for connecting Java applications with the database. We can perform many SQL operations in a Java application with the help of JDBC. The four main components of JDBC are used for interacting with the database, viz. JDBC API, JDBC DriverManager, Test suite, ODBC Bridge Driver. The DriverManager ensures that the correct driver is chosen for the database we are interacting with and is returned to the application. When getConnection() is called, the DriverManager will attempt to locate a suitable driver from amongst those loaded at initialisation and those loaded explicitly.

Recommended Readings:

Live masterclass