Java y Bases de datos JDBC

La conectividad a bases de datos es uno de los requisitos de toda aplicación que se precie. Debido a la gran diversidad de gestores de bases de datos y a la orientación multi-plataforma de java los detalles concretos de la conexión a la base de datos son un poco dificil de entender.

Para crear una conexión a una base de datos tenemos la estructura JDBC que está inspirada en ODBC. Lo primero que vamos a necesitar para establecer una conexion a una base de datos es obtener las clases de conexión del proveedor de bases de datos. Yo trabajo con MySql y Oracle me tendré que bajar los controladores propios de cada base de datos . Por un lado los de MySql y por otro los de [http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html|Oracle]]. Estos controladores son los que harán el trabajo sucio de conectar con nuestra base de datos dependiendo de cual sea.

El proceso es el siguiente:

  • Cargamos el controlador especifico para nuestra base de datos.
  • Creamos un objeto conexión especificandole el tipo de controlador que vamos a usar.

Ejemplo para MySql

Proceso a seguir:

  1. Descargas el controlador JDBC de MySql
  2. Lo desempaquetas en el mismo directorio en el que vas a crear la clase que se conecta a la base de datos (en realidad no es necesario pero para este ejemplo es mas entendedor) ( jar -xvf nombre_del_archivo_jar_descargado_de_MySql.jar )
  3. con esto se te debe haber creado una estructura de directorios com/mysql/jdbc/bla/bla/bla/bla
  4. Ahora podemos crear la clase conectora.
    • Debemos importar el paquete java.sql y nada mas porque le conector de mysql ya lo tenemos en el mismo directório.
    • Cargamos los drivers de la base de datos
    • Creamos la cadena de conexión
    • y conectamos
  /* 
  * @author: juan josé ortilles
  * @description : Utilidad para conectar a MySql
  * @description : necesita el ddriver jdbc descargable de la web de MySql 
  * @creation-date: 19-07-2007
  */
  import java.sql.*;
  public class ConectorMySql {
  	Connection conn;
  	/* Clase  que crea una conexion con una base de datos MySql.
  	* El constructor de la clase necesita la cadena de conexion, el usuario y la contraseña de la base de datos
  	* En ese momento abre la conexion
  	* A partir de ahi puedes hacer todas las consultas que quieras
  	* ¡RECUERDA CERRAR LA CONEXION AL TERMINAR DE TRABAJAR CON ELLA!
  	*/
  	public void ConectorMySql(String cadenaDeConexion, String usuario, String contrasena){
  	// lo primero es cargar el driver de la base de datos. En nuestro caso el que hemos descargado de MySql
    	 try {
  	            Class.forName("com.mysql.jdbc.Driver").newInstance();
  	        } catch (Exception ex) {
  	            // si hay un error se manipula aqui
                     System.err.println("Error, no se ha podido cargar el driver de la base de datos");
  	        }
  	        try{
                       /* creamos una cadena de conexion especificandole que es una jdbc, que el driver es mysql
                        * la ubicación de la base de datos (localhost o ip de la máquina) el usuario y la contraseña
                        */
  	        	String url = "jdbc:mysql:" + cadenaDeConexion + "?user=" + usuario + "&password=" + contrasena;
  	    		/*
                         *  ahora ya lo tenemos todo para crear la conexión
                         */
                        conn = DriverManager.getConnection(url);
  	    		
  	    		}catch(SQLException ex){
  	    			System.out.println("SQLException: " + ex.getMessage());
  	    			System.out.println("SQLState: " + ex.getSQLState());
  	    			System.out.println("VendorError: " + ex.getErrorCode());
  	    			}
  	}
        /*
         * Ya tengo la conexión abierta. ahora, desde cualquier otro método de la clase podría invocar a esta conexion
         * mira como va  [[http://en.juantxu.net/doku.php?id=java:utils:conectormysql|en este otro ejemplo]]
         */ 
  }

Ejemplo para Oracle

Los pasos a seguir son los mismos.

  1. Descargar el driver de Oracle
  2. Usarlo. (en este caso yo lo he desempaquetado en el directorio oracle/jdbc/… dentro del directorio de la clase
  3. Verás que se sigue otro enfoque a la hora de cargar el driver quizás mas claro. y que haemos uso de la conexión desde otro método que realiza consultas.
/* 
* @author: juan josé ortilles
* @description : Utilidad para conectar a Oracle
* @description : necesita el ddriver jdbc descargable de la web de Orale 
* @creation-date: 13-08-2007
*/
import java.sql.*;
public class ConectaOracle{
        static Connection cn;
        public void conecta(){
                String cadenaConexion = "jdbc:oracle:thin:@ip_de_la_maquina:Puerto_de_conexion:nombre_de_la_base";
                try{
			  // otra manera de cargar el driver			
                         DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
                        // driver@machineName:port:SID  ,  userid,  password
                         cn = DriverManager.getConnection(cadenaConexion, Usuario, Contraseña);
                 }catch(SQLException e){System.err.println(e.getMessage());
        }
        
        public ResultSet consulta(String sql){

                ResultSet resultado = null;
                try{

                        Statement stmt = cn.createStatement();
                resultado = stmt.executeQuery(sql);
                 }catch(SQLException e){System.err.println(e.getMessage());}
                 return resultado;
        }
        public void desConecta(){

                 try{
                        cn.close();
                 }catch(SQLException e){System.err.println(e.getMessage());}

        }

}
 
java/50.txt · Última modificación: 2010/05/04 18:00 por juantxu
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki