Author Topic: como insertar una fecha con JDATECHOOSER en MYSQL?  (Read 40370 times)

haw01

  • Jr. Member
  • **
  • Posts: 82
  • Karma: 0
    • View Profile
como insertar una fecha con JDATECHOOSER en MYSQL?
« on: Abril 22, 2011, 11:12:35 pm »
buenas men,ps ya le busque y le busque y le hize de todo,lo que quiero hacer es
pero como recojo el dato del jdatechooser
ya la instancie y puse mi metodo  asi



public static String fechaMySQL(JDateChooser jDatefecha){

String fech=jDatefecha.getCalendar();

JDateChooser fechas=new JDateChooser();

int anio = jDatefecha. GetCalendar(). Get(Calendar. YEAR);
int mes = jDatefecha. GetCalendar(). Get(Calendar. MONTH) + 1;
int dia = jDatefecha. GetCalendar(). Get(Calendar. DAY_OF_MONTH);

return anio+"/". Format(mes)+"/". Format(dia);
}

aqui pongo una imagen,lo que trato hacer es como recoger el dato de la fechaa,segun pensaba que era como lo declaraba si mi variable la declaro como... JDateChooser jDatefecha;
pero yo pensaba que era hacer algo como esto

fecha=jDateFecha.getDate();

 y al hacer l insert
Code: [Select]
stmt.execute("INSERT INTO ventas(fecha,factura,clave_mvto,clave_product,cantidad,proveedor,cliente,costo,importe)VALUES('"
                     + fecha + "','"+factura + "','"+clave_mov+ "','"+ clave_prod +"','"+ cantidad + "','"+ proveedor+ "', '"+ nom_cliente+ "', '"+ costo + "','"+importe+"')");
pero no me da y esa es mi duda espero si alguien me puede dar mis jalones de orejass...para ver si asi carburo le seguire buscando...



« Last Edit: Abril 22, 2011, 11:18:48 pm by haw01 »

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5466
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: como insertar una fecha con JDATECHOOSER en MYSQL?
« Reply #1 on: Abril 23, 2011, 12:34:44 am »
Si jDateFecha.getDate(); devuelve un Date, no puedes ponerlo tal cual en el string del insert, sino que tienes que conseguir un string en un formato que entienda la base de datos.

Mira qué formatos entiende tu base de datos y usa SimpleDateFormat para obtenerla en ese formato. http://chuwiki.chuidiang.org/index.php?title=SimpleDateFormat

Se bueno.

sapito169

  • Sr. Member
  • ****
  • Posts: 459
  • Karma: 0
    • View Profile
Re: como insertar una fecha con JDATECHOOSER en MYSQL?
« Reply #2 on: Abril 23, 2011, 03:34:16 am »
uuu  no es una buena idea programar orientado a cadenas majer usa peraperstamente

http://chuidiang.org/content/preparedstatement

haw01

  • Jr. Member
  • **
  • Posts: 82
  • Karma: 0
    • View Profile
Re: como insertar una fecha con JDATECHOOSER en MYSQL?
« Reply #3 on: Abril 23, 2011, 03:52:10 am »
gracias por responder chuidiang es que mira aqui esta mi problema pongo esto y me marca error
fecha=jDateFecha.getDate();  no puedo hacer esto....pense que era como el jtextfield que es igual alo que se escribe en el campo lo recoges con fecha=jtxtfecha.getText(); y hacer con fecha lo que tu quieraspero no es asi,todavia no se como recoger la fecha que selecciono el usuariooo del jdatechooser y que se escribe en el textfield que casi es parecido el campo,pero a pesar que le hago estooo ....

    java.util.Date fecha=new java.util.Date("01/01/2011"); o de esta manera Date fecha = new Date(); pero no entiendo como recoger el dato del jdatechooser,pero gracias de antemano por su tiempoooo....

 es que yo tengo este metodo pero no se por que netbeans me marca que es incompatible
aqui la pongo la imagen


 jDatefecha es el nombre que declar del jdatechooser
public static String fechaMySQL(JDateChooser jDatefecha){

     JDateChooser fechas=new JDateChooser();

DecimalFormat sdf = new DecimalFormat("00");
int anio = jDatefecha. GetCalendar(). Get(Calendar. YEAR);
int mes = jDatefecha. GetCalendar(). Get(Calendar. MONTH) + 1;
int dia = jDatefecha. GetCalendar(). Get(Calendar. DAY_OF_MONTH);

}
Es que lo instancio con  JDateChooser fechas=new JDateChooser(); pero que mas hago con fechas ese es mi problemaa no puedo hacer algo asi  fechas=JDateChooser.getDate(); obtengo la fecha pero me marca error en netbeans y no me deja hacerlo asi...

Y respecto con sapitoo si estaba pensando cambiarlo ya empeze a cambiar mi sistema a sentencias precompiladas o sentencias preparadas,pero esto me atrasoo jejeje pero bueno gracias de todas maneras seguire buscando.... saludos bye
« Last Edit: Abril 23, 2011, 06:22:12 am by haw01 »

luischavez

  • Newbie
  • *
  • Posts: 41
  • Karma: 0
    • View Profile
Re: como insertar una fecha con JDATECHOOSER en MYSQL?
« Reply #4 on: Abril 23, 2011, 08:15:41 am »
Bueno me desperto la curiosidad el componente que mensionas ya que nunca lo avia utilizado XD ni si quiera savia que existia, pero bueno despues de un rato de hacer pruebas esta forma me funciono correctamente, por sierto no se si estamos usando la misma version de la libreria pero yo la consegui aqui: http://sourceforge.net/projects/jdatechooser/

Es solo un ejemplo de como hacerlo, si lo quieres aplicar a tu proyecto le tienes que hacer algunos cambios.

Code: [Select]
//imports
import java.sql.SQLException;
import datechooser.beans.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

Code: [Select]
//Variables globales
    public static String servidor = "";
    public static String basedatos = "";
    public static String user = "";
    public static String pass = "";

Code: [Select]
//Obtiene la fecha seleccionada y la guarda como sql.date
    public static Date Fecha(DateChooserPanel jDatefecha){
        Date date = jDatefecha.getCurrent().getTime();
        long d = date.getTime();
        java.sql.Date fecha = new java.sql.Date(d);
        return fecha;
}

Code: [Select]
//Genera la consulta
    public static void Query(String Tabla, Object[] Value){
        try {
            Connection conexion = DriverManager.getConnection("jdbc:mysql://"+servidor+"/"+basedatos+"?useServerPrepStmts=true", user, pass);
            PreparedStatement Insertar = conexion.prepareStatement("insert into "+Tabla+" values (?,?,?,?)");
            for(int x = 0;x < Value.length;x ++){
                if(Value[x].getClass().getSimpleName().equals("Integer")){
                    System.out.println("Value "+x+" is Integer");
                    Insertar.setInt(x+1, Integer.parseInt(Value[x].toString()));
                }else if(Value[x].getClass().getSimpleName().equals("String")){
                    System.out.println("Value "+x+" is String");
                    Insertar.setString(x+1, Value[x].toString());
                }else if(Value[x].getClass().getSimpleName().equals("Boolean")){
                    System.out.println("Value "+x+" is Boolean");
                    Insertar.setBoolean(x+1, Boolean.parseBoolean(Value[x].toString()));
                }else if(Value[x].getClass().getSimpleName().equals("Date")){
                    System.out.println("Value "+x+" is Date");
                    Insertar.setDate(x+1, java.sql.Date.valueOf(Value[x].toString()));
                }else{
                    System.out.println("Value "+x+": Tipo no reconocido");
                }
            }
            int state = Insertar.executeUpdate();
            if(state == 1){
                System.out.println("Consulta generada correctamente");
            }else{
                System.out.println("Error en la Consulta");
            }
        } catch (SQLException ex) {
            Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

Para usarla seria de esta manera:
Code: [Select]
      Object[] Row = new Object[4];
        Row[0] = 1;
        Row[1] = "luis";
        Row[2] = false;
        Row[3] = Fecha(dateChooserPanel1);
        Query("miTabla", Row);
« Last Edit: Abril 23, 2011, 08:19:42 am by luischavez »

haw01

  • Jr. Member
  • **
  • Posts: 82
  • Karma: 0
    • View Profile
Re: como insertar una fecha con JDATECHOOSER en MYSQL?
« Reply #5 on: Abril 23, 2011, 09:01:59 am »
hola luiz chavez gracias  por tu tiempo men tambien la descargue de ahi de sourceforge si es la misma libreria
 pero como que no te entendi bien aqui

Code: [Select]
//Obtiene la fecha seleccionada y la guarda como sql.date
    public static Date Fecha(DateChooserPanel jDatefecha){
        Date date = jDatefecha.getCurrent().getTime();
        long d = date.getTime();
        java.sql.Date fecha = new java.sql.Date(d);
        return fecha;
}
DateChooserPanel jDatefecha que es lo mismo que... JDateChooser jDatefecha

pero entonces el dato lo recogo esa es mi dudaa intentare con tu metodo saludos men es que tengo esa dudaaa... y no la puedo sacar de mi cabeza pero bueno ya gracias por todo!ya lo demas me toca a mii!saludos menn!!y gracias por todo tu tiempoo!!bye!!


luischavez

  • Newbie
  • *
  • Posts: 41
  • Karma: 0
    • View Profile
Re: como insertar una fecha con JDATECHOOSER en MYSQL?
« Reply #6 on: Abril 23, 2011, 09:13:28 am »
lo que pasa es que no creo que estemos usando la misma version, yo estoy usando la version 1.1.1. que la descarge de aqui: http://sourceforge.net/projects/jdatechooser/

si quieres usar mi ejemplo baja la version 1.1.1
o cambia el codigo para que se adapte a tu version, pero lo mas importante es que despues de que obtengas el Date lo conviertas a sql.date de esta forma:
Code: [Select]
java.sql.Date fecha = new java.sql.Date(d);

haw01

  • Jr. Member
  • **
  • Posts: 82
  • Karma: 0
    • View Profile
Re: como insertar una fecha con JDATECHOOSER en MYSQL?
« Reply #7 on: Abril 23, 2011, 09:40:48 am »
bueno men desde ya muchas gracias ya mas o menos entendi no muy bien pero ya me salio lo que hize fue
crear una clase llamadaa modelofecha y de ahi instancio mi clase y recogo el dato con getFecha(); y la paso a una variable String...y asi lo guardo para que despues lo inserte n la base de datos que ahora es lo que voy a tratar de insertarla pero por si alguein le sirve como le hize aqui lo dejo muchas gracias men

Code: [Select]
package accesosimple;
import java.util.Calendar;
import java.util.Date;


public class ModeloFecha {

    String sDia;
    String sMes;
    int sAño;
    String fecha;

    public ModeloFecha(Date unaFecha) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(unaFecha);
        int dia = cal.get(Calendar.DAY_OF_MONTH);
        int mes = cal.get(Calendar.MONTH) + 1;

        if (dia < 10) {
            sDia = "0";
            sDia += dia;
        } else {
            sDia = "" + dia;
        }
        if (mes < 10) {
            sMes = "0";
        }
        sMes += mes;
        sAño = cal.get(Calendar.YEAR);
        fecha = sAño + "-" + sMes + "-" + sDia;
    }

    public String getFecha() {
        return fecha;
    }

    public int getAño() {
        return sAño;
    }

    public int getMes() {
        return Integer.parseInt(sMes);
    }

    public int getDia() {
        return Integer.parseInt(sDia);
    }
}

y en mi boton de altas tengo es...bueno es una manera...
Code: [Select]
   ModeloFecha f = new ModeloFecha(jDatefecha.getDate());
String fech=f.getFecha();
JOptionPane.showMessageDialog( this, "la fecha es"+fech );



ya ahora teniendo eso  en esa variable la fecha no se si es la forma correcta tu que opinas men,me falta algo me sobra algo no se,pero bueno ya me registra la fecha  :D :D :D saludos xd

oyeee y si tu metodo lo quiero pasar a un jtextfield como le hago y del jtextfield recogo el dato  mira

Code: [Select]
public static Date Fecha(JDateChooser jDatefecha,JTextField jtxtfecha){
        Date date = jDatefecha.getDate();
        long d = date.getTime();
        java.sql.Date fecha = new java.sql.Date(d);
     
        return fecha;
        jtxtfecha.setText(fecha);//AQUI ME marca error me dice que  me dice que el metodo setText  no puede ser aplicacado
to gyben types
requirejava.lang.string
found:java.sql.date
}
aver si me ayudas con esto ultimo y ya me ha servido todo lo que me has dicho men saludos.... y muchas graciasss
« Last Edit: Abril 23, 2011, 09:51:00 am by haw01 »

luischavez

  • Newbie
  • *
  • Posts: 41
  • Karma: 0
    • View Profile
Re: como insertar una fecha con JDATECHOOSER en MYSQL?
« Reply #8 on: Abril 23, 2011, 09:49:59 am »
bueno lo que yo entiendo es que quieres insertarla con este formato: yyyy/mm/dd

con el codigo que te pase haces eso sin tener que hacer tantas cosas XD, ademas tu campo fecha no si si estes trabajando con un capo tipo text, varchar etc o con un campo date, que si es para una fecha lo recomendable es que sea de tipo date.

haw01

  • Jr. Member
  • **
  • Posts: 82
  • Karma: 0
    • View Profile
Re: como insertar una fecha con JDATECHOOSER en MYSQL?
« Reply #9 on: Abril 23, 2011, 11:45:21 am »
ahhh okas men,solo quiero agradecert por toda tu ayuda men...me sirvio de mucho y si el campo
es de tipo date y el formato ahora ya aprendi a darle formato muchas gracias men,ya quedo con tu
ayuda jejeje eres grande men quisiera ser como tu de grande estudiare mx jeje bueno hasta luego xao

 

ey