Foros del Web » Programación para mayores de 30 ;) » Java »

Como distinguir los datos de una BD con un ResulSetMetaData

Estas en el tema de Como distinguir los datos de una BD con un ResulSetMetaData en el foro de Java en Foros del Web. Hola! Un ResulSetMetaData se utiliza cuando desconoces cuantos son los datos de la cabecera de base de datos y cual es su tipo. Pero ¿como ...
  #1 (permalink)  
Antiguo 02/09/2007, 02:57
 
Fecha de Ingreso: mayo-2007
Mensajes: 222
Antigüedad: 17 años
Puntos: 0
Como distinguir los datos de una BD con un ResulSetMetaData

Hola!

Un ResulSetMetaData se utiliza cuando desconoces cuantos son los datos de la cabecera de base de datos y cual es su tipo.

Pero ¿como se puede diferenciar sin saber nada de la base de datos, como el dato (tanto el metadato como el dato en cuestion), puede ser de un tipo o de otro, para sacarlos por pantalla de una aplicacion web ?.

Sin utilizar el log de un entorno de desarrollo como pista, para que te diga una vez hecho el getColumnsCount y haber hecho despues en un bucle el getColumnTypeName, cual es el nombre cabecera y tipo de dato.

Saludos.
  #2 (permalink)  
Antiguo 02/09/2007, 07:16
 
Fecha de Ingreso: mayo-2007
Mensajes: 222
Antigüedad: 17 años
Puntos: 0
Re: Como distinguir los datos de una BD con un ResulSetMetaData

Alguien puede echarme una mano
  #3 (permalink)  
Antiguo 02/09/2007, 07:34
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Re: Como distinguir los datos de una BD con un ResulSetMetaData

Hola:

La clase Connection tiene un método getMetaData() que te da un DataBaseMetaData. Con eso puedes obtener qué tablas hay en la base de datos y cómo están compuestas estas tablas. Lo único necesario es conectarse a una base de datos.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #4 (permalink)  
Antiguo 02/09/2007, 17:27
 
Fecha de Ingreso: mayo-2007
Mensajes: 222
Antigüedad: 17 años
Puntos: 0
Re: Como distinguir los datos de una BD con un ResulSetMetaData

Cita:
Iniciado por chuidiang Ver Mensaje
Hola:

La clase Connection tiene un método getMetaData() que te da un DataBaseMetaData. Con eso puedes obtener qué tablas hay en la base de datos y cómo están compuestas estas tablas. Lo único necesario es conectarse a una base de datos.

Se bueno.

Muchas Gracias ya lo probare a ver que tal, de todas formas ¿no hay otra manera diferente de hacerlo combinando el ResultSetMetaData y ResultSet (aunque sea utilizando bucles)?
  #5 (permalink)  
Antiguo 03/09/2007, 15:16
 
Fecha de Ingreso: mayo-2007
Mensajes: 222
Antigüedad: 17 años
Puntos: 0
Re: Como distinguir los datos de una BD con un ResulSetMetaData

Alguien que me pueda echar otra vez una mano?
  #6 (permalink)  
Antiguo 09/09/2007, 16:16
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 21 años, 5 meses
Puntos: 37
Re: Como distinguir los datos de una BD con un ResulSetMetaData

Yo lo hice en WebSphere Studio Site Developer para desplegar cualquier resulset con servlets y jsp
en el servlet:


datosDBbean.setCommand(instruccionSQL);

// Assign labels to columns of the result set.
DBSelectMetaData resultMetaData = datosDBbean.getMetaData();
// Execute the query
System.out.println( "4.-Anets de Execute EJECUTA ASELECION..." );
datosDBbean.execute();
System.out.println( "5.- Despues de Execute..." );
// Call the result page
System.out.println("6.-Carga el bean de datos recien recuperado en request..." );

request.setAttribute("datosDBbean", datosDBbean);
System.out.println( "7.- redirecciona hacia Ejecuta SeleccionResultados.jsp..." );



EN EL JSP:


<%@ page import="com.ibm.db.beans.*" %>
<%@ page import="java.math.BigInteger" %>
<jsp:useBean id="datosDBbean" class="com.ibm.db.beans.DBSelect" scope="request" />
<%
System.out.println("&mensaje99=estamos dentro de jsp ejecuta seleccionresultados");
try {
//java.lang.String campo0 = "";
//if ( !resultados.wasNull() )
// Aunq no haya habido registros, se debera retornar las columnas
long registros = 0;
if(datosDBbean.first()) {
java.lang.String arrCadena[];
arrCadena = new String[datosDBbean.getColumnCount()];
long i=0;
// Inicializa los arreglos con vacios
for (i=0;i<datosDBbean.getColumnCount() ;i++){
arrCadena[(int)i] = "";
}
System.out.println("&mensaje98=Conteo de columas="+datosDBbean.getColumnCount());
do { // Ciclo de lectura de registros
registros++;
if (registros>15000){break;}
// Debe ser mediante ciclo que recupere TODOS los campos de bean
for (i=0;i<datosDBbean.getColumnCount() ;i++){
if (registros>1){arrCadena[(int)i] += "|"; }
//java.math.BigDecimal java.math.BigDecimal getBigDecimal
// arrCadena[(int)i] += ( java.lang.String ) datosDBbean.getColumn((int)i+1); //throws an exception if empty
arrCadena[(int)i] += datosDBbean.getColumnAsString((int)i+1); //throws an exception if empty
}
} while(datosDBbean.next());
// genera las salidas o respuesta
java.lang.String campo = "";
if (registros>0){
System.out.println("&mensaje98=eANTES DE CICLO ED VACIADO");
for (i=0;i<datosDBbean.getColumnCount() ;i++){
campo= datosDBbean.getColumnName((int)i+1);
%>&<%=campo%>=<%=arrCadena[(int)i]%><%
// &cadena< % =i % >=< % =arrCadena[i]
}
System.out.println("&mensaje98=FIN DE DICLO DE VACIADO ultimo campo="+campo);
}// de hay registros
}else{
System.out.println("&error=No se encontraron registros");
} // end of if
%>&totRegistros=<%=registros%><%
}catch (DBException _e0) {%>
&totRegistros=0
<%System.out.println("cerrando conexion en catch por que no hubo registros");
}
datosDBbean.close(DBStatement.LEVEL_STATEMENT);%>
  #7 (permalink)  
Antiguo 09/09/2007, 16:18
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 21 años, 5 meses
Puntos: 37
Re: Como distinguir los datos de una BD con un ResulSetMetaData

Cita:
<%@ page import="com.ibm.db.beans.*" %>
<%@ page import="java.math.BigInteger" %>
<jsp:useBean id="datosDBbean" class="com.ibm.db.beans.DBSelect" scope="request" />
<%
System.out.println("&mensaje99=estamos dentro de jsp ejecuta seleccionresultados");
try {
// Aunq no haya habido registros, se debera retornar las columnas
long registros = 0;
if(datosDBbean.first()) {
java.lang.String arrCadena[];
arrCadena = new String[datosDBbean.getColumnCount()];
long i=0;
// Inicializa los arreglos con vacios
for (i=0;i<datosDBbean.getColumnCount() ;i++){
arrCadena[(int)i] = "";
}
System.out.println("&mensaje98=Conteo de columas="+datosDBbean.getColumnCount());
do { // Ciclo de lectura de registros
registros++;
if (registros>15000){break;}
// Debe ser mediante ciclo que recupere TODOS los campos de bean
for (i=0;i<datosDBbean.getColumnCount() ;i++){
if (registros>1){arrCadena[(int)i] += "|"; }
arrCadena[(int)i] += datosDBbean.getColumnAsString((int)i+1); //throws an exception if empty
}
} while(datosDBbean.next());
// genera las salidas o respuesta
java.lang.String campo = "";
if (registros>0){
System.out.println("&mensaje98=eANTES DE CICLO ED VACIADO");
for (i=0;i<datosDBbean.getColumnCount() ;i++){
campo= datosDBbean.getColumnName((int)i+1);
%>&<%=campo%>=<%=arrCadena[(int)i]%><%
}
System.out.println("&mensaje98=FIN DE DICLO DE VACIADO ultimo campo="+campo);
}// de hay registros
}else{
System.out.println("&error=No se encontraron registros");
} // end of if
%>&totRegistros=<%=registros%><%
}catch (DBException _e0) {%>
&totRegistros=0
<%System.out.println("cerrando conexion en catch por que no hubo registros");
}
datosDBbean.close(DBStatement.LEVEL_STATEMENT);%>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:35.