JDBC Tutorials - Herong's Tutorial Examples - v3.12, by Dr. Herong Yang
Loading JDBC Driver for MySQL Server
This section describes how to load the MySQL JDBC driver class - mysql-connector-java-xxx-bin.jar.
If you are using JDK 8 or higher, it will automatically load the MySQL JDBC driver, as long as the JAR file is included in the classpath. There is no need to call Class.forName("com.mysql.cj.jdbc.Driver") to load the driver class explicitly Here is a tutorial program to show you how JDBC loads the MySQL JDBC driver:
/* MySqlLoadDriver.java * Copyright (c) HerongYang.com. All Rights Reserved. */ import java.sql.*; import java.util.*; public class MySqlLoadDriver { public static void main(String [] args) { Connection con = null; try { System.out.println("Before loading SQLServerDriver:"); listDrivers(); // Load the MySQL JDBC driver - new class name Class.forName("com.mysql.cj.jdbc.Driver"); // Load the MySQL JDBC driver - old class name // Class.forName("com.mysql.jdbc.Driver"); System.out.println("After loading SQLServerDriver:"); listDrivers(); } catch (Exception e) { System.err.println("Exception: "+e.getMessage()); } } private static void listDrivers() { Enumeration driverList = DriverManager.getDrivers(); while (driverList.hasMoreElements()) { Driver driverClass = (Driver) driverList.nextElement(); System.out.println(" "+driverClass.getClass().getName()); } } }
The compilation and execution tests with the latest version of JDK were recorded below:
herong> javac MySqlLoadDriver.java herong> java -cp .:mysql-connector-java.jar MySqlLoadDriver Before loading SQLServerDriver: com.mysql.cj.jdbc.Driver After loading SQLServerDriver: com.mysql.cj.jdbc.Driver
As you can see from the output, there is no need to call Class.forName("com.mysql.cj.jdbc.Driver") to load the driver class explicitly. The driver class is loaded automatically by the JVM, if the driver class JAR is in the classpath.
By the way, the classpath delimiter is ":" on macOS and Linux systems. For Windows systems, you need to use ";".
Old versions of JDK and/or MySQL JDBC driver may behave differently. For example, here is the output of the same program with JDK 8 and MySQL JDBC 5.1.36 driver. I am not sure what the "com.mysql.fabric.jdbc.FabricMySQLDriver" driver class is for.
herong> javac MySqlLoadDriver.java herong> java -cp .:mysql-connector-java-5.1.36-bin.jar MySqlLoadDriver Before loading SQLServerDriver: com.mysql.jdbc.Driver com.mysql.fabric.jdbc.FabricMySQLDriver After loading SQLServerDriver: com.mysql.jdbc.Driver com.mysql.fabric.jdbc.FabricMySQLDriver
Table of Contents
JDBC (Java Database Connectivity) Introduction
Installing and Running Java DB - Derby
Derby (Java DB) JDBC DataSource Objects
Java DB (Derby) - DML Statements
Java DB (Derby) - ResultSet Objects of Queries
Java DB (Derby) - PreparedStatement
►MySQL JDBC Driver (MySQL Connector/J)
MySQL Connector/J - Download and Installation
►Loading JDBC Driver for MySQL Server
Creating Connections with DataSource Class
Getting Driver and Server Information
Creating Tables with AUTO_INCREMENT Columns
MySQL - Reference Implementation of JdbcRowSet
MySQL - JBDC CallableStatement
MySQL CLOB (Character Large Object) - TEXT
MySQL BLOB (Binary Large Object) - BLOB
Oracle Express Edition Installation on Windows
Oracle - Reference Implementation of JdbcRowSet
Oracle - JBDC CallableStatement
Oracle CLOB (Character Large Object) - TEXT
Oracle BLOB (Binary Large Object) - BLOB
Microsoft SQL Server Express Edition
Microsoft JDBC Driver for SQL Server
Microsoft JDBC Driver - Query Statements and Result Sets
Microsoft JDBC Driver - DatabaseMetaData Object
Microsoft JDBC Driver - DDL Statements
Microsoft JDBC Driver - DML Statements
SQL Server - PreparedStatement
SQL Server CLOB (Character Large Object) - TEXT
SQL Server BLOB (Binary Large Object) - BLOB
JDBC-ODBC Bridge Driver - sun.jdbc.odbc.JdbcOdbcDriver
JDBC-ODBC Bridge Driver - Flat Text Files
JDBC-ODBC Bridge Driver - MS Access
JDBC-ODBC Bridge Driver - MS SQL Server
Summary of JDBC Drivers and Database Servers