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

[SOLUCIONADO] Dos decimales en una consulta

Estas en el tema de Dos decimales en una consulta en el foro de Java en Foros del Web. Saludos. Estoy aprendiendo java y estoy realizando consultas a una Base de datos en MySQL. pero al mostrar las cifras de la la consulta en ...
  #1 (permalink)  
Antiguo 15/01/2013, 10:32
 
Fecha de Ingreso: abril-2008
Mensajes: 112
Antigüedad: 16 años
Puntos: 0
Dos decimales en una consulta

Saludos.

Estoy aprendiendo java y estoy realizando consultas a una Base de datos en MySQL.
pero al mostrar las cifras de la la consulta en pantalla, necesito que muestre 2 decimales luego del
punto "."

Ejecuto la consulta, la cargo en una JTable (de tipo AbstractTableModel), la JTable la cargo en un ScrollPane

Código Javascript:
Ver original
  1. Container contentPane = new Container(); //contenedor
  2. contentPane = getContentPane(); //
  3. getContentPane().setLayout(null);
  4. JScrollPane scrollPane =  new JScrollPane(tabla);
  5. scrollPane.setBounds(50, 10, 600, 400); //posicion del scroll pane
  6. contentPane.add(scrollPane); //agregamos nuestra tabla al contenedor
  7.            
  8. static final String sqlQuery = "SELECT id, descripcion, round(valor, 2) AS Precio FROM productos";//consulta con round para obtener los 2 decimales, al hacerlo asi
  9. muestra los 2 decimales como deseo, pero al publicar la consulta en java no sale asi



Ejecuto la consulta:
Código Javascript:
Ver original
  1. //Metodo para Ejecutar la Cadena de consulta para la DB
  2. public void establecerConsulta(String consulta) throws SQLException, IllegalStateException
  3.         {
  4.         if(!DBConectado) //Asegurarse de la conexion
  5.             throw new IllegalStateException("No hay conexion con la DB");
  6.        
  7.         resultado = st.executeQuery(consulta); //Ejecuta la consulta
  8.         metaData = resultado.getMetaData(); //Obtiene la MEtaData
  9.        
  10.         resultado.last(); //recorre el ResultSet hasta el final
  11.         numFilas = resultado.getRow(); //contamos las filas
  12.         this.fireTableStructureChanged();
  13.                 }



La consulta me sale asi:
http://www.flickr.com/photos/7811442...ream/lightbox/


Lo que busco es que por ejemplo en el ultimo valor (3.6) se muestre 3.60
Haciendo la consulta en MySQL sale asi, pero en Java no sale, de igual manera los
encabezados de las columnas no cambian, si en la consulta pongo:
"SELECT id, descripcion AS DESCRIPCION, round(valor, 2) AS Precio FROM productos"
sale con minusculas.


Por favor, alguien sabe como solucionar el problema??

gracias
  #2 (permalink)  
Antiguo 15/01/2013, 12:02
 
Fecha de Ingreso: octubre-2012
Ubicación: Bogotá
Mensajes: 40
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: Dos decimales en una consulta

Solo tienes que recibir el resultado en una variable de tipo String
no se si estés usando el prepareStatement de java, si no, recomiendo que lo uses, en java hay un tipo de arreglo que nos trae los resultados en el tipo de variable que creamos, esos arreglos se llaman resultSet, y pues para ejecutar una consulta en java con todos los estándares y de manera organizada es necesario crear 3 variables, una que nos haga la conexion a la base de datos (Connection), una para hacer la consulta (prepareStatement) y la ultima para manejar los resultados (resultSet)

PD: no se si las clases estén bien escritas, pero esa es la idea
  #3 (permalink)  
Antiguo 15/01/2013, 12:37
 
Fecha de Ingreso: abril-2008
Mensajes: 112
Antigüedad: 16 años
Puntos: 0
Respuesta: Dos decimales en una consulta

RedioX gracias por responder

trabajo con las siguientes cosas:

Código Javascript:
Ver original
  1. private Connection Cx; //variable tipo conector
  2. private Statement st; //Statement  (declaracion), supongo que te refieres a este
  3. private ResultSet  resultado; //variable tipo ResultSet
  4. private ResultSetMetaData metaData; //MEtadata para almacenar la info general de la consulta

y de ahi ejecuto la consulta con establecerConsulta

No coloco todo el código, por que estoy manejando 3 clases y ahi voy llamando y ejecutando.
Puedo realizar la consulta sin ningún problema la duda surge al tratar de obtener 2 cifras luego del separador decimal, por lo general en otros lenguajes he solucionado eso arreglando la consulta a la Base de datos y publicándola como debo hacerlo, pero aki en java veo que no es así.
  #4 (permalink)  
Antiguo 15/01/2013, 15:13
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Dos decimales en una consulta

y has probado algo como esto?

import java.text.DecimalFormat;

DecimalFormat formateador = new DecimalFormat("0000.00");
double d = new Double("3.6");
System.out.println (formateador.format (d));
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #5 (permalink)  
Antiguo 16/01/2013, 08:32
 
Fecha de Ingreso: abril-2008
Mensajes: 112
Antigüedad: 16 años
Puntos: 0
Respuesta: Dos decimales en una consulta

GRacias por responder Fuzzylog

No es que deba imprimir ese valor en consola, debo mostrar la consulta en un control como JTable, de la siguiente manera:

http://www.flickr.com/photos/7811442...ream/lightbox/

En otras palabras.... Es el JTAble el que me genera conflicto al no permitirme hacer lo que deseo
  #6 (permalink)  
Antiguo 16/01/2013, 08:35
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Dos decimales en una consulta

formateador.format (d) es un String con el formato deseado.

Si piensas un poco darás con la forma de meterlo en tu JTable
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #7 (permalink)  
Antiguo 16/01/2013, 09:56
 
Fecha de Ingreso: octubre-2012
Ubicación: Bogotá
Mensajes: 40
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: Dos decimales en una consulta

sigo diciendo que con String funciona perfectamente, por que yo ya lo he probado, y me funciona lo mas de bien.
yo declararia una variable de tipo String y le asignaria el resultao, aunque puedo retornar directamente el resultado
Código Javascript:
Ver original
  1. if(resultado.next){//if si sabes si es un resultado si es mas usas while y en vez de una variable usas un arreglo
  2.  
  3. String mivariable;
  4. mivariable=resultado.getString("nombredecolamnaenla BD");
  5. }
ya con eso la variable tiene el resultado que venga de la base de datos

espero te sirva
  #8 (permalink)  
Antiguo 08/02/2013, 09:47
 
Fecha de Ingreso: abril-2008
Mensajes: 112
Antigüedad: 16 años
Puntos: 0
Respuesta: Dos decimales en una consulta

Cosa tan rara....
estaba usando una tabla de tipo AbstractTableModel para publicar la consulta, asi que lo cambié y usé una de tipo DefaultTableModel y se solucionó.

gracias por sus aportes

Etiquetas: string
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 01:47.