miércoles, 11 de junio de 2008

Java 2 - Sesión 1 parte 2


((•)) Escucha este post

Sesión 1 - segunda parte

Sigamos trabajando con la base de datos de la primera parte...

Ejemplo 3 :Mostrar una tabla con nombres de cada columna

Aveces resulta fácil imprimir una tabla y arriba al querer poner las filas lo copiamos como estan en las tablas.Pero que pasaría si tenemos 100 filas,¿la copiarias todas?.
Veamos un código que nos reduce un codigo que si saldria con pocos datos pero con muchos se hace muy trabajoso.
Abrimos un project de igual forma del ejemplo uno pero en este caso le pongo el nombre conexion3.
-------------------------------------------------------------------------------------------------

Código:


import java.sql.*;
public class conexion3{
public static void main(String args[]) {
Connection con;/*establece la coneccion a BD*/
Statement sen; /*contenedor para aplicar comandos sql*/
ResultSet res;
ResultSetMetaData meta;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){
System.out.println("Error en los drivers"+e);
}
try{
con=DriverManager.getConnection("jdbc:odbc:base1");
System.out.println("conexion establecida corretamente");
sen=con.createStatement();
res=sen.executeQuery("Select * from Proveedores");
meta=res.getMetaData();
int cols= meta.getColumnCount();
//esta parte imprime Los nombres de la columnas
for(int i=1;i<cols;i++){
if(i<cols){
System.out.print(meta.getColumnName(i)+"");
}
else{
System.out.println(meta.getColumnName(i));
}
}
System.out.println("\n");
//esta parte imprime El contenido de cada columna y tabla en si
while(res.next()){
for(int i=1;i<cols;i++){
if(i<cols){
System.out.print(res.getString(i)+" ");
}else{
System.out.println(res.getString(i));

}
}
System.out.println("\n");
}
con.close();
}catch(SQLException e){
System.out.println("Error en la conexion"+e);
}
}
}



-------------------------------------------------------------------------------------------------
La Salida es la siguiente(clic para agrandar)

Notamos que los nombres de las columnas salen muy juntos,bueno en eso lo podrian arreglar facilmente con un System.out.println("\t");//que es un separador de espacio entre dato y dato.

Cave rescatar:
Lo puesto de color azul el
getMetaData es una funcion digamosla asi , permite sacar propiedades de una tabla getColumnCount(); que nos quiere decir que consigamos el numero de columnas de la tabla y getColumnName que nos quiere decir consigue nombre de la columna.

Ejemplo 4 :Trabajar con mas de una tabla y hacer llamados de columnas de diferentes tablas

Ahora en este ejemplo ilustraremos mejor cuando queremos utilizar datos de dos tablas por ejemplo cuando en una tabla tenemos Idproductos,NombreProducto ,Proveedor ,entre otros atributos;queremos que nos imprima el Id del proveedor pero para eso tenemos que llamar a la tabla Proveedores,bueno con este ejemplo quedaria mejor ilustrado.


Abrimos un project de igual forma del ejemplo uno pero en este caso le pongo el nombre conexion4.
-------------------------------------------------------------------------------------------------


import java.sql.*;
public class conexion4{
public static void main(String args[]) {
Connection con;/*establece la coneccion a BD*/
Statement sen; /*contenedor para aplicar comandos sql*/
ResultSet res;
ResultSetMetaData meta;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){
System.out.println("Error en los drivers"+e);
}
try{
con=DriverManager.getConnection("jdbc:odbc:base1");
System.out.println("conexion establecida corretamente");
sen=con.createStatement();
res=sen.executeQuery("Select * from Productos inner join Proveedores on Productos.idProveedor=Proveedores.idProveedor");
meta=res.getMetaData();
int cols= meta.getColumnCount();

for(int i=1;i<=cols;i++){
if(i<cols){
System.out.print(meta.getColumnName(i)+"");
}
else{
System.out.println(meta.getColumnName(i));
}
}

while(res.next()){
for(int i=1;i<cols;i++){
if(i<cols){
System.out.print(res.getString(i)+"");
}else{
System.out.println(res.getString(i));
}
}
System.out.println("\n");
}

con.close();
}catch(SQLException e){
System.out.println("Error en la conexion"+e);
}

}
}


-------------------------------------------------------------------------------------------------

La salida es la siguiente...
Bueno la salida un poco desordenada contiene todos loa atributos de la tabla Productos y asigando continuamente con los atributos al proveedor correspondiente.
Cave rescatar:

Lo primero puesto de color azul Select * from Productos inner join Proveedores on Productos.idProveedor=Proveedores.idProveedor nos indica que primero llamamos ala tabla Productos y despues a Proveedores con la condicion que el atributo Proveedor de la tabla Productos sea igual al atributo proveedor y comparando sus id de los dos busca su igualdad.
No olvidar tambien que la otra parte marcada de azul el con.close(); cierra las determinadas tablas abiertas,esmuy importante su uso.


gracias...Fin primera sesión

0 comentarios:

Followers

 

JocLuis Blog. Copyright 2009 Todos los Derechos Reservados | Template por Bloganol