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

MySQL + Java + NetBeans + java.sql.Date

Estas en el tema de MySQL + Java + NetBeans + java.sql.Date en el foro de Java en Foros del Web. Buenas, yo se que esta lleno de estas preguntas, he leído toda la sección del foro, si las 45 paginas de post que hay mas ...
  #1 (permalink)  
Antiguo 17/11/2010, 22:40
 
Fecha de Ingreso: octubre-2007
Mensajes: 24
Antigüedad: 16 años, 5 meses
Puntos: 0
MySQL + Java + NetBeans + java.sql.Date

Buenas, yo se que esta lleno de estas preguntas, he leído toda la sección del foro, si las 45 paginas de post que hay mas todo un montón de otros foros y paginas y no he podido solucionar el problema, debe ser algo tonto pero no lo veo, llevo 2 días en esto. Trato de darle formato y me reclama por que o es java.util.Date o pq es String o pq deve ser java.sql.Date

trabajo con MySQL Server 5
NetBeans 6.9.1
y el famoso jCalendar de http://www.toedter.com/en/jcalendar/index.html
con el jDateChooser

el asunto es que en la BD trabajo las fechas como Date y esta almacenado así el dato 2010-11-17

si bien puedo rescatar la fecha de la BD y ponerla en el jDateChooser pero no puedo guardar o modificar una fecha desde el jDateChooser a la DB.

no se si queda claro, acá van los códigos.

Clase Garantia
Código PHP:
package Clases;

import java.sql.Date;

public class 
Garantia {
    
int Num_Orden;
    private 
Date Fecha_Garantia;
    private 
String Poliza;
    private 
String Factura_Boleta;
    private 
String Aut_Garantia;

    
//Constructor todo null o 0
    
public Garantia() {
        
Num_Orden 0;
        
Fecha_Garantia null;
        
Poliza null;
        
Factura_Boleta null;
        
Aut_Garantia null;
    }
    
    
//Getters and Setters
    
public void setNum_Orden(int Num_Orden) {this.Num_Orden Num_Orden;    }
    public 
void setPoliza(String Poliza) {this.Poliza Poliza;    }
    public 
void setFactura_Boleta(String Factura_Boleta) {this.Factura_Boleta Factura_Boleta;    }
    public 
void setAut_Garantia(String Aut_Garantia) {this.Aut_Garantia Aut_Garantia;    }
    public 
void setFecha_Garantia(Date Fecha_Garantia) {this.Fecha_Garantia Fecha_Garantia;    }
    public 
int getNum_Orden() {return Num_Orden;    }
    public 
String getFactura_Boleta() {return Factura_Boleta;    }
    public 
String getPoliza() {return Poliza;    }
    public 
String getAut_Garantia() {return Aut_Garantia;    }
    public 
Date getFecha_Garantia() {return Fecha_Garantia;    }

GarantiaDAO
Código PHP:
package DAO;

import BaseDeDatos.JDBCmysql;
import Clases.Garantia;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JOptionPane;

public class 
GarantiaDAO {

    
//Busca si existe la garantia y inserta los datos en la clase para ser cargados luego en el frame
    
public void Buscar(Garantia garantiaGarantia garantia1throws SQLException{
        try {
            
String sql "Select * from Garantia where Guia_Num_Orden=?";
            
PreparedStatement stmt JDBCmysql.getConexao().prepareStatement(sql);
            
stmt.setInt(1garantia.getNum_Orden());
            
ResultSet rs  stmt.executeQuery();
            while(
rs.next()){
                
garantia1.setNum_Orden(rs.getInt("Guia_Num_Orden"));
                
garantia1.setPoliza(rs.getString("Poliza"));
                
garantia1.setFactura_Boleta(rs.getString("Factura_Boleta"));
                
garantia1.setFecha_Garantia(rs.getDate("Fecha"));
                
garantia1.setAut_Garantia(rs.getString("Aut_Garantia"));
            }
            
rs.close();
            
stmt.close();
        } catch (
SQLException ex) {
            
System.out.println(ex);
        }
    }

    
//Primero busca si existe la garantia a modificar y de ser asi modifica los datos de la garantia
    
public void Modificar(Garantia garantiathrows SQLException{
        try {
            
Garantia garantia1 = new Garantia();
            
String sql "Select Guia_Num_Orden from Garantia where Guia_Num_Orden =?";
            
PreparedStatement stmt JDBCmysql.getConexao().prepareStatement(sql);
            
stmt.setInt(1garantia.getNum_Orden());
            
ResultSet rs stmt.executeQuery();
            while (
rs.next()) {
                
garantia1.setNum_Orden(rs.getInt("Guia_Num_Orden"));
            }
            if (
garantia.getNum_Orden() == garantia1.getNum_Orden()) {
                
sql "update garantia set Poliza=?, Factura_Boleta=?, Fecha=?, Aut_Garantia=? where Guia_Num_Orden=?";
                
stmt JDBCmysql.getConexao().prepareStatement(sql);
                
stmt.setString(1garantia.getPoliza());
                
stmt.setString(2garantia.getFactura_Boleta());
                
stmt.setDate(3garantia.getFecha_Garantia());
                
stmt.setString(4garantia.getAut_Garantia());
                
stmt.setInt(5garantia.getNum_Orden());
                
stmt.execute();
                
stmt.close();
                
JOptionPane.showMessageDialog(null"Garantía Modificada""Aviso"JOptionPane.INFORMATION_MESSAGE);
            } else {
                
JOptionPane.showMessageDialog(null"Numero de Guía no corresponde""Aviso"JOptionPane.ERROR_MESSAGE);
            }
        } catch (
SQLException ex) {
            
System.out.println(ex);
        }
    }
    
    public 
void Guardar(Garantia garantiaGarantia garantia1){
        
//falta hacer
    
}

IG_Garantia
Código PHP:
    private void btn_ModificarActionPerformed(java.awt.event.ActionEvent evt) {                                              
        try {
            
Garantia garantia = new Garantia();//creo clase garantia
            
GarantiaDAO garantiaDAO = new GarantiaDAO();//creo garantiaDAO
            
garantia.setNum_Orden(Integer.parseInt(txt_NOrdenGuia.getText()));//ingreso Nº Orden Guia a la clase garantia
            
garantia.setPoliza(txt_Poliza.getText());//ingreso Poliza a la clase garantia
            
System.out.println("Fecha :" dc_FechaGarantia.getDate());//el sout me arroja Fecha :Fri Nov 19 00:00:00 CLST 2010
/*ERROR*/   
garantia.setFecha_Garantia(dc_FechaGarantia.getDate());
//requiere java.sql.Date //found java.util.Date
            
garantia.setFactura_Boleta(txt_FacturaBoleta.getText());//ingreso Nº Orden Guia a la clase garantia
            
garantia.setAut_Garantia(txt_AutGarantia.getText());
            
garantiaDAO.Modificar(garantia);
        } catch (
SQLException ex) {
            
Logger.getLogger(IG_Garantia.class.getName()).log(Level.SEVEREnullex);
        }
}                                             

    
//Funciona todo bien aca
    
private void btn_BuscarActionPerformed(java.awt.event.ActionEvent evt) {                                           
        try {
            
Garantia garantia = new Garantia();
            
Garantia garantia1 = new Garantia();
            
GarantiaDAO garantiaDAO = new GarantiaDAO();
            
garantia.setNum_Orden(Integer.parseInt(txt_NOrdenGuia.getText()));
            
garantiaDAO.Buscar(garantiagarantia1);
            if (
garantia.getNum_Orden() == garantia1.getNum_Orden()) {
                
txt_NOrdenGuia.setText(String.valueOf(garantia1.getNum_Orden()));
                
txt_Poliza.setText(garantia1.getPoliza());
                
txt_FacturaBoleta.setText(garantia1.getFactura_Boleta());
                
dc_FechaGarantia.setDate(garantia1.getFecha_Garantia());
                
txt_AutGarantia.setText(garantia1.getAut_Garantia());
                
JOptionPane.showMessageDialog(null"Garantía encontrada""Aviso"JOptionPane.INFORMATION_MESSAGE);
            } else {
                
JOptionPane.showMessageDialog(null"Numero de Guía no encontrado""Aviso"JOptionPane.ERROR_MESSAGE);
            }
        } catch (
SQLException ex) {
            
Logger.getLogger(IG_Garantia.class.getName()).log(Level.SEVEREnullex);
        }

  #2 (permalink)  
Antiguo 18/11/2010, 06:04
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 16 años, 3 meses
Puntos: 41
Respuesta: MySQL + Java + NetBeans + java.sql.Date

No miré tu código..
Pero la cosa es fácil
Código Java:
Ver original
  1. package Clases;
  2.  
  3. import java.sql.Date; //esto no!
  4. import java.util.Date;// <----------------
  5.  
  6. public class Garantia {
  7.     int Num_Orden;  // <-- ESTE CAMPO TIENE QUE SER PRIVATE También
  8.     private Date Fecha_Garantia; //afecta a esto....
  9.     private String Poliza;

Código Java:
Ver original
  1. //después....
  2. garantia.setFechaGarantia(unJCalendar.getDate());
  3. // y listo..........

PD: los nombres de los atributos Empiezan Con minúscula!!
__________________
BadProgrammerException!

Última edición por FiruzzZ; 18/11/2010 a las 06:10
  #3 (permalink)  
Antiguo 18/11/2010, 09:14
 
Fecha de Ingreso: octubre-2007
Mensajes: 24
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: MySQL + Java + NetBeans + java.sql.Date

Cita:
Iniciado por FiruzzZ Ver Mensaje
No miré tu código..
Pero la cosa es fácil
Código Java:
Ver original
  1. package Clases;
  2.  
  3. import java.sql.Date; //esto no!
  4. import java.util.Date;// <----------------
  5.  
  6. public class Garantia {
  7.     int Num_Orden;  // <-- ESTE CAMPO TIENE QUE SER PRIVATE También
  8.     private Date Fecha_Garantia; //afecta a esto....
  9.     private String Poliza;

Código Java:
Ver original
  1. //después....
  2. garantia.setFechaGarantia(unJCalendar.getDate());
  3. // y listo..........

PD: los nombres de los atributos Empiezan Con minúscula!!
Me sigue tirando error.

debí borrar el private del int, no me había dado cuenta.

Al crear el Statement no me deja ponerlo como
Código Java:
Ver original
  1. stmt.setDate(3, garantia.getFecha_Garantia());

me obliga a ponerle
Código Java:
Ver original
  1. stmt.setDate(3, (Date) garantia.getFecha_Garantia());

con lo cual me carga
Código Java:
Ver original
  1. import java.sql.Date;

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date
at DAO.GarantiaDAO.Modificar(GarantiaDAO.java:50)
Código Java:
Ver original
  1. stmt.setDate(3, (Date) garantia.getFecha_Garantia());//LINEA 50
  #4 (permalink)  
Antiguo 18/11/2010, 09:36
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 16 años, 3 meses
Puntos: 41
Respuesta: MySQL + Java + NetBeans + java.sql.Date

ese statement es un dolor de huevos.. por suerte hace rato dejé de usar JDBC..

hacé esto .. y (ahora si) listo!
Código Java:
Ver original
  1. stmt.setDate(3, new java.sql.Date(garantia.getFecha_Garantia().getTime()));

es un secretito de constructores que muchos no se dan cuenta.. también funciona a la inversa..
__________________
BadProgrammerException!
  #5 (permalink)  
Antiguo 18/11/2010, 10:14
 
Fecha de Ingreso: octubre-2007
Mensajes: 24
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: MySQL + Java + NetBeans + java.sql.Date

Cita:
Iniciado por FiruzzZ Ver Mensaje
ese statement es un dolor de huevos.. por suerte hace rato dejé de usar JDBC..

hacé esto .. y (ahora si) listo!
Código Java:
Ver original
  1. stmt.setDate(3, new java.sql.Date(garantia.getFecha_Garantia().getTime()));

es un secretito de constructores que muchos no se dan cuenta.. también funciona a la inversa..
buena máster, el día del asdf iba a pillar eso, no te imaginas cuanto leí

Etiquetas: mysql, netbeans
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:09.