JDBC DriverManager Class

The DriverManager class acts as an interface between the user and drivers. It keeps track of the drivers that are available and handles establishing a connection between a database and the appropriate driver. The DriverManager class maintains a list of Driver classes that have registered themselves by calling the method DriverManager.registerDriver().
In short, DriverManager Class provides basic service for managing a set of JDBC drivers.
From JDBC 4.0, applications no longer need to explicitly load JDBC drivers using Class.forName(). When the method getConnection is called, the DriverManager will attempt to locate a suitable driver from amongst those loaded at initialization and those loaded explicitly using the same classloader as the current applet or application.

DriverManager Class Diagram

DriverManager Class Commonly used methods

  • static void deregisterDriver(Driver driver) - Removes the specified driver from the DriverManager's list of registered drivers.
  • static Connection getConnection(String url) - Attempts to establish a connection to the given database URL.
  • static Connection getConnection(String url, Properties info) - Attempts to establish a connection to the given database URL.
  • static Connection getConnection(String url, String user, String password) - Attempts to establish a connection to the given database URL.
  • static Driver getDriver(String url) - Attempts to locate a driver that understands the given URL.
  • static Enumeration getDrivers() - Retrieves an Enumeration with all of the currently loaded JDBC drivers to which the current caller has access.
  • static void registerDriver(Driver driver) - Registers the given driver with the DriverManager.

DriverManager Class Examples

Java DriverManager.registerDriver(Driver driver) Method

The registerDriver(Driver driver) method of DriverManager class registers the given driver in the DriverManager's list. If the driver is null, it returns the NullPointerException.
public class DriverManagerExamples {
 public static void main(String[] args) throws SQLException {
  Driver driver = new com.mysql.jdbc.Driver();
  DriverManager.registerDriver(driver);
  System.out.println("Driver successfully registered!");
       }
}
Output:
Driver successfully registered!

Java DriverManager.registerDriver(Driver driver)

The registerDriver(Driver driver) method of DriverManager class registers the given driver in the DriverManager's list. DriverAction is used when DriverManager.deregisterDriver is called:
package com.javaguides.jdbc.statement.examples.packages;

import java.sql.Driver;
import java.sql.DriverAction;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DriverManagerExamples {
    public static void main(String[] args) throws SQLException {
        Driver driver = new com.mysql.jdbc.Driver();
        DriverManager.registerDriver(driver);
        System.out.println("Driver successfully registered !");

        DeRegisterDriver deRegisterDriver = new DeRegisterDriver(driver);
        deRegisterDriver.deregister();
    }
}

class DeRegisterDriver implements DriverAction {

    private Driver driver;
    DeRegisterDriver(Driver driver) {
        this.driver = driver;
    }

    @Override
    public void deregister() {
        try {
            DriverManager.deregisterDriver(driver);
            System.out.println("DeregisterDriver successfully");
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
Output:
Driver successfully registered !
DeregisterDriver successfully

Connection getConnection(String URL, String user, String password)

This method is used to attempts to establish a connection to the given database URL.
try (Connection connection = DriverManager
.getConnection("jdbc:mysql://localhost:3306/mysql_database?useSSL=false", "root", "root");

// Step 2:Create a statement using connection object
Statement statement = connection.createStatement();) {

// Step 3: Execute the query or update query
statement.execute(createTableSQL);
} catch (SQLException e) {a
}

Enumeration java.sql.DriverManager.getDrivers()

Retrieves an Enumeration with all of the currently loaded JDBC drivers to which the current caller has access.
package com.javaguides.jdbc.statement.examples.packages;

import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Enumeration;

public class DriverManagerExamples {
    public static void main(String[] args) throws SQLException {
        Driver driver = new com.mysql.jdbc.Driver();
        DriverManager.registerDriver(driver);
        System.out.println("Driver successfully registered !");

        Enumeration < Driver > iterator = DriverManager.getDrivers();
        while (iterator.hasMoreElements()) {
            Driver driver2 = (Driver) iterator.nextElement();
            System.out.println(driver2);
        }
    }
}
Output:
Driver successfully registered !
com.mysql.fabric.jdbc.FabricMySQLDriver@135fbaa4
com.mysql.jdbc.Driver@45ee12a7
com.mysql.jdbc.Driver@330bedb4

void java.sql.DriverManager.setLoginTimeout(int seconds)

Sets the maximum time in seconds that a driver will wait while attempting to connect to a database once the driver has been identified.
package com.javaguides.jdbc.statement.examples.packages;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DriverManagerExamples {
    public static void main(String[] args) throws SQLException {

        DriverManager.setLoginTimeout(10); //to set login timeout  
        try (Connection connection = DriverManager
            .getConnection("jdbc:mysql://localhost:3306/mysql_database?useSSL=false", "root", "root")) {
            System.out.println("Connection created");
            //to get login timeout  
            System.out.println("your login timeout is = " + DriverManager.getLoginTimeout());
        }
        System.out.println("Connection auto closed");
    }
}
Output:
Connection created
your login timeout is = 10
Connection auto closed




Comments