Ir al contenido principal

Conexion JDBC - JAVA a travès de un archivo Properties

Para conectar a bases de datos con el archivo properties necesitas definir la siguiente estructura:

Rutas de los Archivos Properties, es esas rutas tienes que haber creado tus archivos properties:

package com.develtrex.util;
import java.net.URL;
/**
 *
 * @author 007M
 */
public class Ruta {
    private final String dbOracle="/com/develtrex/propiedad/dboracle.properties";
    private final String dbMysql="/com/develtrex/propiedad/dbmysql.properties";
    private final String dbPostgres="/com/develtrex/propiedad/dbpostgres.properties";
    private final String dbSqlServer="/com/develtrex/propiedad/dbsqlserver.properties";
   
    public URL getFileDbOracle(){
        return getClass().getResource(dbOracle);
    }
   
    public URL getFileDbMysql(){
        return getClass().getResource(dbMysql);
    }
   
    public URL getFileDbPostgres(){
        return getClass().getResource(dbPostgres);
    }
   
    public URL getFileDbSqlServer(){
        return getClass().getResource(dbSqlServer);
    }
}

Definirmos la Clase ReadProperties, que se encarga de la lectura de  los archivos properties:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.develtrex.dao;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;
/**
 *
 * @author 007M
 */
public  class ReadProperties {
    private java.net.URL ruta;
    private String ipHost;
    private String puerto;
    private String basedatos;
    private String usuario;
    private String contrasena;
    private String gestor;
   
    public ReadProperties(java.net.URL path) throws IOException{
        this.ruta=path;
        init();
    }
   
    private void init()throws IOException{
        try{
        Properties props=new Properties();
        InputStream in = ruta.openStream();
        props.load(in);   
        ipHost=props.getProperty("iphost");
        puerto=props.getProperty("puerto");
        basedatos=props.getProperty("namedb");
        usuario=props.getProperty("usuario");
        contrasena=props.getProperty("contrasena");
        gestor=props.getProperty("gestor");
        in.close();
        }catch(IOException ex){           
            System.err.println("causa: " + ex.getCause());
            System.err.println("Mensaje: " + ex.getMessage());
            System.err.println("Localizacion: " + ex.getLocalizedMessage());
            System.err.println("Traza: " + ex.getStackTrace());
            throw ex;
        }
    }
    public URL getRuta() {
        return ruta;
    }
    public void setRuta(URL ruta) {
        this.ruta = ruta;
    }
    public String getIpHost() {
        return ipHost;
    }
    public void setIpHost(String ipHost) {
        this.ipHost = ipHost;
    }
    public String getPuerto() {
        return puerto;
    }
    public void setPuerto(String puerto) {
        this.puerto = puerto;
    }
    public String getBasedatos() {
        return basedatos;
    }
    public void setBasedatos(String basedatos) {
        this.basedatos = basedatos;
    }
    public String getUsuario() {
        return usuario;
    }
    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }
    public String getContrasena() {
        return contrasena;
    }
    public void setContrasena(String contrasena) {
        this.contrasena = contrasena;
    }
    public String getGestor() {
        return gestor;
    }
    public void setGestor(String gestor) {
        this.gestor = gestor;
    }
}

Archivos Properties:

MYSQL:
# To change this template, choose Tools | Templates
# and open the template in the editor.
usuario=root
contrasena=toor
iphost=192.168.1.124
puerto=3306
namedb=celltower
gestor=MYSQL

ORACLE:
# To change this template, choose Tools | Templates
# and open the template in the editor.
usuario=sysloquesea
contrasena=sysloquesea
iphost=192.168.1.124
puerto=1521
namedb=orcl
gestor=ORACLE

POSTGRES:
# To change this template, choose Tools | Templates
# and open the template in the editor.
usuario=postgres
contrasena=toor
iphost=192.168.1.124
puerto=5432
namedb=tumi
gestor=POSTGRES

SQLSERVER:
# To change this template, choose Tools | Templates
# and open the template in the editor.
usuario=SA
contrasena=
iphost=192.168.1.70
puerto=1433
namedb=appdevel
gestor=SQLSERVER

Necesitamos la Clase Conexion:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.develtrex.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
 *
 * @author007M
 */
public class Conexion {
    private Connection cnx;
    private String ipHost;
    private String puerto;
    private String baseDatos;
    private String usuario;
    private String contrasena;
    private String cadenaConexion;
    private String gestorBD;
    private String driver;
    public Conexion(
            String paramIpHost,
            String paramPuerto,
            String paramBaseDatos,
            String paramUsuario,
            String paramContrasena,
            String paramGestorBD) {
        this.ipHost = paramIpHost;
        this.puerto = paramPuerto;
        this.baseDatos = paramBaseDatos;
        this.usuario = paramUsuario;
        this.contrasena = paramContrasena;
        this.gestorBD = paramGestorBD;
        if (gestorBD.equalsIgnoreCase("ORACLE")) {
            this.cadenaConexion = "jdbc:oracle:thin:@" + ipHost + ":" + puerto + ":" + baseDatos;
            this.driver = "oracle.jdbc.OracleDriver";
        } else if (gestorBD.equalsIgnoreCase("MYSQL")) {
            this.cadenaConexion = "jdbc:mysql://" + ipHost + ":" + puerto + "/" + baseDatos;
            this.driver = "com.mysql.jdbc.Driver";
        } else if(gestorBD.equalsIgnoreCase("POSTGRES")){
            this.cadenaConexion = "jdbc:postgresql://" + ipHost + ":" + puerto + "/" + baseDatos;
            this.driver = "org.postgresql.Driver";
        }else if(this.gestorBD.equalsIgnoreCase("SQLSERVER")){
            this.cadenaConexion = "jdbc:sqlserver://" + ipHost + ":" + puerto + ";DatabaseName=" + baseDatos;
            this.driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
        }else {
            System.err.println("No existe implementacion para ese gestor");
        }
    }
    public boolean conectarBD() throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException {
        try {
            Class.forName(this.driver).newInstance();
            cnx = DriverManager.getConnection(cadenaConexion, usuario, contrasena);
            cnx.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
            cnx.setAutoCommit(false);
            return true;
        } catch (ClassNotFoundException ex) {
            System.err.println("causa: " + ex.getCause());
            System.err.println("Mensaje: " + ex.getMessage());
            System.err.println("Localizacion: " + ex.getLocalizedMessage());
            System.err.println("Traza: " + ex.getStackTrace());
            throw ex;
        } catch (InstantiationException ex) {
            System.err.println("causa: " + ex.getCause());
            System.err.println("Mensaje: " + ex.getMessage());
            System.err.println("Localizacion: " + ex.getLocalizedMessage());
            System.err.println("Traza: " + ex.getStackTrace());
            throw ex;
        } catch (IllegalAccessException ex) {
            System.err.println("causa: " + ex.getCause());
            System.err.println("Mensaje: " + ex.getMessage());
            System.err.println("Localizacion: " + ex.getLocalizedMessage());
            System.err.println("Traza: " + ex.getStackTrace());
            throw ex;
        } catch (SQLException ex) {
            System.err.println("causa: " + ex.getCause());
            System.err.println("Mensaje: " + ex.getMessage());
            System.err.println("Localizacion: " + ex.getLocalizedMessage());
            System.err.println("Traza: " + ex.getStackTrace());
            throw ex;
        }
    }
    public boolean desconectarBD() throws SQLException {
        try {
            cnx.close();
            return true;
        } catch (SQLException ex) {
            System.err.println("causa: " + ex.getCause());
            System.err.println("Mensaje: " + ex.getMessage());
            System.err.println("Localizacion: " + ex.getLocalizedMessage());
            System.err.println("Traza: " + ex.getStackTrace());
            throw ex;
        }
    }
    public boolean confirmar() throws SQLException {
        try {
            cnx.commit();
            return true;
        } catch (SQLException ex) {
            System.err.println("causa: " + ex.getCause());
            System.err.println("Mensaje: " + ex.getMessage());
            System.err.println("Localizacion: " + ex.getLocalizedMessage());
            System.err.println("Traza: " + ex.getStackTrace());
            throw ex;
        }
    }
    public boolean deshacer() throws SQLException {
        try {
            cnx.rollback();
            return true;
        } catch (SQLException ex) {
            System.err.println("causa: " + ex.getCause());
            System.err.println("Mensaje: " + ex.getMessage());
            System.err.println("Localizacion: " + ex.getLocalizedMessage());
            System.err.println("Traza: " + ex.getStackTrace());
            throw ex;
        }
    }
    public Connection getCnx() {
        return cnx;
    }
    public void setCnx(Connection cnx) {
        this.cnx = cnx;
    }
    public String getIpHost() {
        return ipHost;
    }
    public void setIpHost(String ipHost) {
        this.ipHost = ipHost;
    }
    public String getPuerto() {
        return puerto;
    }
    public void setPuerto(String puerto) {
        this.puerto = puerto;
    }
    public String getBaseDatos() {
        return baseDatos;
    }
    public void setBaseDatos(String baseDatos) {
        this.baseDatos = baseDatos;
    }
    public String getUsuario() {
        return usuario;
    }
    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }
    public String getContrasena() {
        return contrasena;
    }
    public void setContrasena(String contrasena) {
        this.contrasena = contrasena;
    }
    public String getCadenaConexion() {
        return cadenaConexion;
    }
    public void setCadenaConexion(String cadenaConexion) {
        this.cadenaConexion = cadenaConexion;
    }
    public String getGestorBD() {
        return gestorBD;
    }
    public void setGestorBD(String gestorBD) {
        this.gestorBD = gestorBD;
    }
    public String getDriver() {
        return driver;
    }
    public void setDriver(String driver) {
        this.driver = driver;
    }
}
Ejecutando un Test:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.develtrex.tester;
import com.develtrex.dao.Conexion;
import com.develtrex.dao.ReadProperties;
import com.develtrex.util.Ruta;
import java.io.IOException;
import java.sql.SQLException;
/**
 *
 * @author 007M
 */
public class Tester {
    public static void main(String arg[]) throws ClassNotFoundException, ClassNotFoundException, InstantiationException, InstantiationException, IllegalAccessException, SQLException, IOException {
        Ruta src = new Ruta();
        ReadProperties rdOracle = new ReadProperties(src.getFileDbOracle());
        ReadProperties rdMysql = new ReadProperties(src.getFileDbMysql());
        ReadProperties rdPostgres = new ReadProperties(src.getFileDbPostgres());
        ReadProperties rdSqlServer = new ReadProperties(src.getFileDbSqlServer());
        Conexion cnxOracle = new Conexion(
                rdOracle.getIpHost(),
                rdOracle.getPuerto(),
                rdOracle.getBasedatos(),
                rdOracle.getUsuario(),
                rdOracle.getContrasena(),
                rdOracle.getGestor());
        Conexion cnxMysql = new Conexion(
                rdMysql.getIpHost(),
                rdMysql.getPuerto(),
                rdMysql.getBasedatos(),
                rdMysql.getUsuario(),
                rdMysql.getContrasena(),
                rdMysql.getGestor());
        System.out.println("ORACLE: " + cnxOracle.conectarBD());
        System.out.println("MYSQL: " + cnxMysql.conectarBD());
        /* .. continua tu con las demaàs */
    }
}

Comentarios

Entradas más populares de este blog

install mysql 5.6 database on ubuntu 20.04

Command List: wget http://launchpadlibrarian.net/418347043/multiarch-support_2.29-0ubuntu2_amd64.deb sudo dpkg -i multiarch-support_2.29-0ubuntu2_amd64.deb sudo dpkg -i mysql-common_5.6.40-1ubuntu14.04_amd64.deb sudo dpkg -i libmysqlclient18_5.6.40-1ubuntu14.04_amd64.deb sudo dpkg -i libmysqlclient-dev_5.6.40-1ubuntu14.04_amd64.deb sudo dpkg -i libmysqld-dev_5.6.40-1ubuntu14.04_amd64.deb sudo apt install  libtinfo5 sudo apt install libncurses5 sudo apt install -f sudo dpkg -i mysql-community-client_5.6.40-1ubuntu14.04_amd64.deb sudo dpkg -i mysql-client_5.6.40-1ubuntu14.04_amd64.deb sudo dpkg -i mysql-community-server_5.6.40-1ubuntu14.04_amd64.deb sudo dpkg -i mysql-community-bench_5.6.40-1ubuntu14.04_amd64.deb sudo dpkg -i mysql-community-source_5.6.40-1ubuntu14.04_amd64.deb sudo dpkg -i mysql-server_5.6.40-1ubuntu14.04_amd64.deb sudo apt install python2 sudo apt install -f sudo dpkg -i mysql-community-test_5.6.40-1ubuntu14.04_amd64.deb sudo dpkg -i mysql-testsuite_5.6.40-1ubuntu1...

create kvm Ubuntu 20.04 with virsh by jofrantoba

wget -bqc https://mirror.freethought-internet.co.uk/ubuntu-releases/20.04/ubuntu-20.04-live-server-amd64.iso qemu-img create -f qcow2 /opt/images/oracle19c-vm.qcow2 200G sudo virt-install --name vm_ubuntu20_freenx --ram 2048 --vcpu 2 --disk path=/opt/images/ubuntu20_freenx-vm.qcow2 --os-type linux --os-variant ubuntu20.04 --network bridge=br2 --graphics vnc,listen=0.0.0.0 --console pty,target_type=serial --cdrom '/opt/iso/ubuntu-20.04-live-server-amd64.iso' Written by @jofrantoba

Configurar SQL Server 2005 para poner a la escucha el puero 1433

Como ustedes ya saben para poder conectarse a una base de datos sql a través de JDBC es necesario que el puerto 1433 se encuentre a la escucha de conexiones, muchos de nosotros hemos tenido este problema, bueno la solución es configurar a  través de la aplicacion "SQL SERVER CONFIGURATION MANAGER", ver figura numero1. fig 01 Luego hacer doble click en el item "Protocols for SQLEXPRESS", ver figura 02 fig 02 Como podemos observar en la figura 02 en la area de contenidos existe un item llamado "TCP/IP" este tiene que estar habilitado o en ingles "enabled" bueno ahora en este item hacemos un doble click para que nos aparezca una ventana como la siguiente, en la cual nos vamos a ubicar en la pestaña "IP ADRESSES", en esta pestaña se tiene que configurar los puertos. fig 03  En la figura 04 se observara que todos los item de TCP Dynamic Ports tienen al cero "0" por valor y TCP port esta ...