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...

martes, 2 de febrero de 2010

Tablas Dinamicas Java NetBeans

Quiza tu ya te diste cuenta de que un JTable, tiene un metodo AddColumn() pero no un AddRow(), y valla problema que es este, por que no le pusieron este metodo caray!!
En fin, eh aqui mi solucion...
Mi JTable se llama agenda, y contiene 2 campos, pero, esto sirve para n campos..

 DefaultTableModel mod=(DefaultTableModel)agenda.getModel();
 String o[]=new String[agenda.getColumnCount()];
 mod.addRow(o);


Primero obtengo el modelo de la tabla agenda (mod), y hago un cast, la segunda linea creo un arreglo String con el tamaño del total de columnas (o),  y al final solo agrego el objeto String al modelo, con addRow(o).

Aclaro que el arreglo depende del tipo de celdas de tu tabla, y ademas, si no te agrega, quiza prueba agregando esta linea:

        agenda.setModel(mod);

Cualquier comentario es bueno, y tomen en cuenta que solo quiero ayudar!  jajaja, si existe una manera mejor, hazmela saber, se que muchos programan todo manual, y se que se debe hacer a si, disculpame por ser flojo y utilizar un entorno grafico, de antemano gracias por leer mi primera entrada!

Pampararan!! 1er entrada

Pues aqui con mi primera entrada de este blog, que mas que nada se dedicara a dar aportes sobre programacion, sobre trabajos realizados, y uno que otro comentario sobre la vida. Espero dentro de poco, digan, a que chingon blog, en fin, comenzamos!!