El API JDBC propone un interface estándar de acceso a bases de datos. Los vendedores de bases de datos implementan dicho interface. Para ello lo que hacen es crear drivers.
Por lo tanto el driver son el conjunto de clases que implementar el interface JDBC para una determinada base de datos.
Ejemplos de drivers serian:
- MySQL – com.mysql.jdbc.Driver
- Oracle – oracle.jdbc.driver.OracleDriver
- DB2 – COM.ibm.db2.jdbc.app.DB2Driver
- SQLServer – com.microsoft.jdbc.sqlserver.SQLServerDriver
- Genérico de ODBC – sun.jdbc.odbc.JdbcOdbcDriver
En la página http://developers.sun.com/product/jdbc/drivers permite buscar drivers de diferentes vendedores por tipo de driver (1,2,3 o 4), nombre de vendedor, compatibilidad con j2ee 1.2, 1.3 o 1.4, por las características del driver: si tiene pool de conexiones, si tiene datasource,…
En nuestro ejemplo vamos a listar que drivers están precargados en el entorno de ejecución. Además mostraremos la versiones del driver, así como si es un driver esta certificado en la compatibilidad JDBC de SUN.
Lo primero que haremos será precargar algunos drivers. Para tener salidas en nuestro programa. Ya que nadie nos asegura que exista alguno precargado.
La forma de cargar un driver mediante programación es cargando su clase mediante la clase Class.
String sDriver = "com.mysql.jdbc.Driver";
String sDriver2 = "sun.jdbc.odbc.JdbcOdbcDriver";
Class.forName(sDriver).newInstance();
Class.forName(sDriver2).newInstance();
Ahora utilizaremos el DriverManager para interrogarle qué drivers están precargados. El método .getDrivers() nos devolverá un listado de drivers. La abstracción del driver está reflejada en la clase Driver.
DriverManager.getDrivers();
Diferentes métodos de Driver nos dará la información relativa al mismo.
Driver driver = (Driver)e.nextElement();
System.out.println("Nombre: " + driver.getClass().getName());
System.out.println("Version: " + driver.getMajorVersion());
System.out.println("Release: " + driver.getMinorVersion());
if (driver.jdbcCompliant())
System.out.println("Es un dirver JDBC Compliant");
else
System.out.println("NO es un driver JDBC Compliant");