Labels

Thursday, October 24, 2013

A JDBC ConnectionManager that load the right driver base on it URL

A simple class to automatically load the correct (most popular) JDBC driver base on the connection URL. If you have other driver URL and driver that I missed here, please send it via comments or email me and I will update this class.

package org.cnci.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.util.HashMap;
import java.util.Map;

/*
 * ConnectionManager
 * @author: T.A. Nguyen
 * 
 * Simple solution to automatically load the JDBC driver based on the 
 * connection url.  You can arrange the order and move the most used
 * to the top to provide sequential search.
 */
public class ConnectionManager {
 private static final Map DRVS = new HashMap();
 
 static {
  DRVS.put("jdbc:oracle:thin",            "oracle.jdbc.OracleDriver");
  DRVS.put("jdbc:sqlserver:",             "com.microsoft.sqlserver.jdbc.SQLServerDriver");
  DRVS.put("jdbc:weblogic:sqlserver:",    "weblogic.jdbc.sqlserver.SQLServerDriver");
  DRVS.put("jdbc:microsoft:sqlserver:",   "com.microsoft.jdbc.sqlserver.SQLServerDriver");
  DRVS.put("jdbc:db2:",                   "com.ibm.db2.jcc.DB2Driver");
  DRVS.put("jdbc:informix-sqli:",         "com.informix.jdbc.IfxDriver");
  DRVS.put("jdbc:mysql:",                 "com.mysql.jdbc.Driver");
  DRVS.put("jdbc:netezza:",               "org.netezza.Driver");
  DRVS.put("jdbc:oracle:oci",             "oracle.jdbc.OracleDriver");
  DRVS.put("jdbc:sybase:Tds:",            "com.sybase.jdbc4.jdbc.SybDriver");
  DRVS.put("jdbc:teradata:",              "com.ncr.teradata.TeraDriver");
  DRVS.put("jdbc:jtds:",                  "net.sourceforge.jtds.jdbc.Driver");
  DRVS.put("jdbc:postgresql:",            "org.postgresql.Driver");
  DRVS.put("jdbc:Cache:",                 "com.intersys.jdbc.CacheDriver");
  DRVS.put("jdbc:FrontBase:",             "com.frontbase.jdbc.FBJDriver");
  DRVS.put("jdbc:h2:",                    "org.h2.Driver");
  DRVS.put("jdbc:hsqldb:hsql:",           "org.hsqldb.jdbcDriver");
  //DRVS.put("jdbc:derby:",               "org.apache.derby.jdbc.ClientDriver"); // Automatically loaded by JVM
  DRVS.put("jdbc:mimer:",                 "com.mimer.jdbc.Driver");
  DRVS.put("jdbc:pervasive:",             "com.pervasive.jdbc.v2.Driver");
  DRVS.put("jdbc:sqlite:",                "org.sqlite.JDBC");
  DRVS.put("jdbc:as400:",                 "com.ibm.as400.access.AS400JDBCDriver");
  DRVS.put("jdbc:mckoi:",                 "com.mckoi.JDBCDriver");
  DRVS.put("jdbc:firebirdsql:",           "org.firebirdsql.jdbc.FBDriver");
  DRVS.put("jdbc:rmi:",                   "RmiJdbc.RJDriver");
  DRVS.put("jdbc:ids",                    "ids.sql.IDSDriver");
  DRVS.put("jdbc:idb:",                   "org.enhydra.instantdb.jdbc.idbDriver"); // InstantDB
  DRVS.put("jdbc:interbase:",             "interbase.interclient.Driver");
  DRVS.put("jdbc:HypersonicSQL:",         "org.hsql.jdbcDriver");
  DRVS.put("jdbc:weblogic:mssqlserver4:", "weblogic.jdbc.mssqlserver4.Driver");
  DRVS.put("jdbc:pointbase:",             "com.pointbase.jdbc.jdbcUniversalDriver");
  DRVS.put("jdbc:cloudscape:",            "COM.cloudscape.core.JDBCDriver");
  DRVS.put("jdbc:JTurbo:",                "com.ashna.jturbo.driver.Driver");
  DRVS.put("jdbc:inetdae:",               "com.inet.tds.TdsDriver");
  DRVS.put("jdbc:cognos:",                "cs.jdbc.driver.CompositeDriver");
  DRVS.put("jdbc:neon:",                  "com.neon.jdbc.Driver");
 }
 

 private ConnectionManager() {
 }

 public static String getDriver(String url) {
  if (url != null) {
   for (String prefix : DRVS.keySet()) {
    if (url.startsWith(prefix)) {
     return DRVS.get(prefix);
    }
   }
  }
  return null;
 }

 public static Connection getConnection(String url, String user, String password) throws Exception {
  Connection conn = null;
  if (url != null) {
   Class.forName(getDriver(url));
   if (user != null && password != null) {
    conn = DriverManager.getConnection(url, user, password);
   } else {
    conn = DriverManager.getConnection(url);
   }
  }
  return conn;
 }
}

No comments:

Post a Comment