Resolve the DB2 driver from JDBC URL

This commit is contained in:
zhaohuihua
2020-02-21 00:02:55 +08:00
parent 18606b51c7
commit 38ec095e70
2 changed files with 18 additions and 2 deletions
@@ -25,7 +25,9 @@ public interface JdbcConstants {
String DB2 = "db2";
String DB2_DRIVER = "com.ibm.db2.jcc.DB2Driver";
String DB2_DRIVER = "com.ibm.db2.jcc.DB2Driver"; // Type4
String DB2_DRIVER2 = "COM.ibm.db2.jdbc.app.DB2Driver"; // Type2
String DB2_DRIVER3 = "COM.ibm.db2.jdbc.net.DB2Driver"; // Type3
String POSTGRESQL = "postgresql";
String POSTGRESQL_DRIVER = "org.postgresql.Driver";
@@ -436,7 +436,21 @@ public final class JdbcUtils implements JdbcConstants {
} else if (rawUrl.startsWith("jdbc:hsqldb:")) {
return "org.hsqldb.jdbcDriver";
} else if (rawUrl.startsWith("jdbc:db2:")) {
return DB2_DRIVER;
// 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:")) {