JDBC for MySQL - Herong's Tutorial Examples - v3.13, by 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
►MySQL JDBC Driver (MySQL Connector/J)
MySQL Connector/J - Download and Installation
►Loading JDBC Driver for MySQL Server
Specifying Timezone During Connection
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