sábado, 6 de febrero de 2010

JAVA y BASES DE DATOS, Clase para realizar la conexion


Que tal! Esta vez quiero compartir con ustedes como se realiza una conexion a una base de datos, no de mysql, ni postgresql, ni oracle, si no con las 3! Es una clasesita sencilla, pero que sirve para conectarse a cualquier manejador (aunque necesitan el .jar que sirve de conector) eso digo yo, aunque sinceramente solo las eh probado con estos 3. En fin, eh aqui mi clase, puede ser aprovechada para un sistema distribuido de multiples gestores o de uno solo, o en fin, lo que les venga en gana, jojo, ZaZ!!


import java.sql.*;
   public class conexionbd {
     Connection cone;
     Statement sql;
     ResultSet res;
     String user="";
     String pass="";
     String bd="";
     String name="";
     String url="";

     public conexionbd(String user1, String pass1, String n, String u)
     {
         user=user1;
         pass=pass1;
         name=n;
         url=u;
     }
 
     public boolean vusers(){
        try{
           Class.forName(name).newInstance();
           cone=DriverManager.getConnection( url,user,pass);
           sql=cone.createStatement();
           return true;
        }catch(Exception e){
           System.out.println(e.getMessage());
           return false;
        }
     }

     public boolean execute(String s){
        try{
           sql=cone.createStatement();
           sql.execute(s);
           return true;
        }catch(Exception e){
           System.out.println(e.getMessage());
           return false;
        }
     }

     public ResultSet select(String s){
        try{
           String source=s;
           sql=cone.createStatement();
           ResultSet us= sql.executeQuery(source);
           return us;
        }catch(Exception e){ return null;}
     }
  }


Explicacion, el constructor recibe 4 parametros: usuario, password, name, y url, el usuario y pass es cuestion de ustedes, name es el nombre del conector, y el url se compone de el nombre del manejador, IP y puerto que utiliza el manejador. Aqui dejo el name y url para mysql, oracle y postgres.
 
ORACLE
NAME: oracle.jdbc.driver.OracleDriver
URL: jdbc:oracle:thin:@//IP:1521/BASEDATOS

MySQL
NAME: com.mysql.jdbc.Driver
URL: jdbc:mysql://IP/BASEDATOS

PostgreSQL
NAME: org.postgresql.Driver
URL: jdbc:postgresql://IP:5432/BASEDATOS

1521 y 5432 son el puerto de Oracle y PostgreSQL respectivamente, IP y la Base de datos pues ustedes sabran cual es.
Vusers() : Es para validar el usuario, retorna false si no existe o el pass estuviera mal, de lo contrario retorna true.
Execute(String): Executa la instruccion SQL, dependiendo del string, ya sea un update, un instert, create, drop, use, etc, etc, retorna true si la instruccion se ejecuto correctamente, de lo contrario false.
Select(String): Executa los querys, y retorna un objeto ResultSet, este objeto contiene los valores que quieres obtener con tu query, si retorna NULL no se llevo a cabo el query.
        Select(“select * from clientes”);
En lo particular se puede mejorar este metodo, pues al retornar un objeto como este, es necesario importar java.SQL.* en la clase de donde realizas el query, nose, que en lugar que te retorne un ResultSet, te retorne un arreglo String, o nose, lo pueden modificar si gustan y comentarme que hicieron.

Recorrer un objeto ResultSet y meterlo a la tabla dinamica:
Supongamos que tenemos un JTable llamado clientes, que contiene 6 campos, necesitamos realizar una conexion con una tabla similar, que contiene 6 campos, tenemos un objeto ResultSet llamado rs, que ya ha sido inicializado con nuestro metodo select, o sea, que la consulta ya se realizo, pueden utilizar algo asi para obtener los datos del rs:
String [] fila=new String[clientes.getColumnCount()];
DefaultTableModel modelo = (DefaultTableModel) cliente.getModel();
while (rs.next()) {
    fila[0]=rs.getString(1);
    fila[1]=rs.getString(2);
    fila[2]=rs.getString(3);
    fila[3]=rs.getString(4)z ;
    fila[4]=rs.getString(5);
    fila[5]=rs.getString(6);
    modelo.addRow(fila);
}
cliente.setModel(modelo);
El metodo next() retorna false cuando se acaben las filas del query.

Cualquier duda hazmela saber, comentario, lo que sea, siempre es bueno escuchar y saber nuevas cosas, que esten bien, les envio un saludo.

Reciprocidad: Hay que dar para recibir..... en el conocimiento es igual...

No hay comentarios:

Publicar un comentario