in core/src/main/java/com/alibaba/druid/util/JdbcUtils.java [395:554]
public static String getDriverClassName(String rawUrl) throws SQLException {
if (rawUrl == null) {
return null;
}
if (rawUrl.startsWith("jdbc:derby:")) {
return "org.apache.derby.jdbc.EmbeddedDriver";
} else if (rawUrl.startsWith("jdbc:mysql:")) {
if (mysql_driver_version_6 == null) {
mysql_driver_version_6 = Utils.loadClass("com.mysql.cj.jdbc.Driver") != null;
}
if (mysql_driver_version_6) {
return MYSQL_DRIVER_6;
} else {
return MYSQL_DRIVER;
}
} else if (rawUrl.startsWith("jdbc:log4jdbc:")) {
return LOG4JDBC_DRIVER;
} else if (rawUrl.startsWith("jdbc:mariadb:")) {
return MARIADB_DRIVER;
} else if (rawUrl.startsWith("jdbc:tidb:")) {
return TIDB_DRIVER;
} else if (rawUrl.startsWith("jdbc:oracle:") //
|| rawUrl.startsWith("JDBC:oracle:")) {
return ORACLE_DRIVER;
} else if (rawUrl.startsWith("jdbc:alibaba:oracle:")) {
return ALI_ORACLE_DRIVER;
} else if (rawUrl.startsWith("jdbc:oceanbase:")) {
return OCEANBASE_DRIVER;
} else if (rawUrl.startsWith("jdbc:microsoft:")) {
return "com.microsoft.jdbc.sqlserver.SQLServerDriver";
} else if (rawUrl.startsWith("jdbc:sqlserver:")) {
return "com.microsoft.sqlserver.jdbc.SQLServerDriver";
} else if (rawUrl.startsWith("jdbc:sybase:Tds:")) {
return "com.sybase.jdbc2.jdbc.SybDriver";
} else if (rawUrl.startsWith("jdbc:jtds:")) {
return "net.sourceforge.jtds.jdbc.Driver";
} else if (rawUrl.startsWith("jdbc:fake:") || rawUrl.startsWith("jdbc:mock:")) {
return "com.alibaba.druid.mock.MockDriver";
} else if (rawUrl.startsWith("jdbc:postgresql:")) {
return POSTGRESQL_DRIVER;
} else if (rawUrl.startsWith("jdbc:edb:")) {
return ENTERPRISEDB_DRIVER;
} else if (rawUrl.startsWith("jdbc:odps:")) {
return ODPS_DRIVER;
} else if (rawUrl.startsWith("jdbc:hsqldb:")) {
return "org.hsqldb.jdbcDriver";
} else if (rawUrl.startsWith("jdbc:db2:")) {
// Resolve the DB2 driver from JDBC URL
// Type2 COM.ibm.db2.jdbc.app.DB2Driver, url = jdbc:db2:databasename
// Type3 COM.ibm.db2.jdbc.net.DB2Driver, url = jdbc:db2:ServerIP:6789:databasename
// Type4 8.1+ com.ibm.db2.jcc.DB2Driver, url = jdbc:db2://ServerIP:50000/databasename
String prefix = "jdbc:db2:";
if (rawUrl.startsWith(prefix + "//")) { // Type4
return DB2_DRIVER; // "com.ibm.db2.jcc.DB2Driver";
} else {
String suffix = rawUrl.substring(prefix.length());
if (suffix.indexOf(':') > 0) { // Type3
return DB2_DRIVER3; // COM.ibm.db2.jdbc.net.DB2Driver
} else { // Type2
return DB2_DRIVER2; // COM.ibm.db2.jdbc.app.DB2Driver
}
}
} else if (rawUrl.startsWith("jdbc:sqlite:")) {
return SQLITE_DRIVER;
} else if (rawUrl.startsWith("jdbc:ingres:")) {
return "com.ingres.jdbc.IngresDriver";
} else if (rawUrl.startsWith("jdbc:h2:")) {
return H2_DRIVER;
} else if (rawUrl.startsWith("jdbc:lealone:")) {
return LEALONE_DRIVER;
} else if (rawUrl.startsWith("jdbc:mckoi:")) {
return "com.mckoi.JDBCDriver";
} else if (rawUrl.startsWith("jdbc:cloudscape:")) {
return "COM.cloudscape.core.JDBCDriver";
} else if (rawUrl.startsWith("jdbc:informix-sqli:")) {
return "com.informix.jdbc.IfxDriver";
} else if (rawUrl.startsWith("jdbc:timesten:")) {
return "com.timesten.jdbc.TimesTenDriver";
} else if (rawUrl.startsWith("jdbc:as400:")) {
return "com.ibm.as400.access.AS400JDBCDriver";
} else if (rawUrl.startsWith("jdbc:sapdb:")) {
return "com.sap.dbtech.jdbc.DriverSapDB";
} else if (rawUrl.startsWith("jdbc:JSQLConnect:")) {
return "com.jnetdirect.jsql.JSQLDriver";
} else if (rawUrl.startsWith("jdbc:JTurbo:")) {
return "com.newatlanta.jturbo.driver.Driver";
} else if (rawUrl.startsWith("jdbc:firebirdsql:")) {
return "org.firebirdsql.jdbc.FBDriver";
} else if (rawUrl.startsWith("jdbc:interbase:")) {
return "interbase.interclient.Driver";
} else if (rawUrl.startsWith("jdbc:pointbase:")) {
return "com.pointbase.jdbc.jdbcUniversalDriver";
} else if (rawUrl.startsWith("jdbc:edbc:")) {
return "ca.edbc.jdbc.EdbcDriver";
} else if (rawUrl.startsWith("jdbc:mimer:multi1:")) {
return "com.mimer.jdbc.Driver";
} else if (rawUrl.startsWith("jdbc:dm:")) {
return JdbcConstants.DM_DRIVER;
} else if (rawUrl.startsWith("jdbc:kingbase:")) {
return JdbcConstants.KINGBASE_DRIVER;
} else if (rawUrl.startsWith("jdbc:kingbase8:")) {
return JdbcConstants.KINGBASE8_DRIVER;
} else if (rawUrl.startsWith("jdbc:gbase:")) {
return JdbcConstants.GBASE_DRIVER;
} else if (rawUrl.startsWith("jdbc:xugu:")) {
return JdbcConstants.XUGU_DRIVER;
} else if (rawUrl.startsWith("jdbc:hive:")) {
return JdbcConstants.HIVE_DRIVER;
} else if (rawUrl.startsWith("jdbc:hive2:")) {
return JdbcConstants.HIVE_DRIVER;
} else if (rawUrl.startsWith("jdbc:phoenix:thin:")) {
return "org.apache.phoenix.queryserver.client.Driver";
} else if (rawUrl.startsWith("jdbc:phoenix://")) {
return JdbcConstants.PHOENIX_DRIVER;
} else if (rawUrl.startsWith("jdbc:kylin:")) {
return JdbcConstants.KYLIN_DRIVER;
} else if (rawUrl.startsWith("jdbc:elastic:")) {
return JdbcConstants.ELASTIC_SEARCH_DRIVER;
} else if (rawUrl.startsWith("jdbc:clickhouse:")) {
if (clickhouse_driver_version_new == null) {
clickhouse_driver_version_new = Utils.loadClass(JdbcConstants.CLICKHOUSE_DRIVER_NEW) != null;
}
if (clickhouse_driver_version_new) {
return JdbcConstants.CLICKHOUSE_DRIVER_NEW;
} else {
return JdbcConstants.CLICKHOUSE_DRIVER;
}
} else if (rawUrl.startsWith("jdbc:presto:")) {
return JdbcConstants.PRESTO_DRIVER;
} else if (rawUrl.startsWith("jdbc:trino:")) {
return JdbcConstants.TRINO_DRIVER;
} else if (rawUrl.startsWith("jdbc:inspur:")) {
return JdbcConstants.KDB_DRIVER;
} else if (rawUrl.startsWith("jdbc:polardb")) {
if (rawUrl.startsWith("jdbc:polardbx:")) {
return JdbcConstants.POLARDBX_DRIVER;
}
return JdbcConstants.POLARDB_DRIVER;
} else if (rawUrl.startsWith("jdbc:highgo:")) {
return "com.highgo.jdbc.Driver";
} else if (rawUrl.startsWith("jdbc:oscar")) {
return JdbcConstants.OSCAR_DRIVER;
} else if (rawUrl.startsWith("jdbc:dbcp:")) {
return JdbcConstants.TYDB_DRIVER;
} else if (rawUrl.startsWith("jdbc:opengauss:")) {
return JdbcConstants.OPENGAUSS_DRIVER;
} else if (rawUrl.startsWith("jdbc:TAOS:")) {
return JdbcConstants.TAOS_DATA;
} else if (rawUrl.startsWith("jdbc:TAOS-RS:")) {
return JdbcConstants.TAOS_DATA_RS;
} else if (rawUrl.startsWith("jdbc:gbasedbt-sqli:")) {
return JdbcConstants.GBASE8S_DRIVER;
} else if (rawUrl.startsWith("jdbc:sundb:")) {
return JdbcConstants.SUNDB_DRIVER;
} else {
throw new SQLException("unknown jdbc driver : " + rawUrl);
}
}