Autor Tema: Java JDBC obtener fecha actual formato java.sql.Date insertar base datos MySql  (Leído 51 veces)

Yager2222

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Tengo que obtener la fecha actual en formato java.sql.Date. para pasar el dato a una tabla en MySQL, Pero estoy completamente perdido:

¿Cómo se inserta la fecha en MySQL desde java?

Código: [Seleccionar]
private Date fecha;

¿Cómo se definiría la "fecha" dentro del siguiente constructor para sacar su valor?

Código: [Seleccionar]
Venta v=new Venta(0, Integer.parseInt(request.getParameter("idCliente")),
                     Integer.parseInt(request.getParameter("idLibro")), **fecha** ) {
      };
                     gventas.registrarVenta(v);

Muchas gracias

Saludos
« última modificación: 24 de Mayo 2020, 13:08 de Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2531
    • Ver Perfil
Re:AYUDA: obtener la fecha actual en formato java.sql.Date
« Respuesta #1 : 23 de Mayo 2020, 15:19 »
Buenas, recomendamos leer https://aprenderaprogramar.com/foros/index.php?topic=1460.0 para escribir en los foros. Sobre lo que consultas, yo lo primero que vería es en qué formato está la fecha en la base de datos. Por ejemplo si está en formato texto, en formato DATE como YYYY-MM-DD, en formato DATETIME como YYYY-MM-DD hh:mm:ss pues según cómo tengas el dato entiendo que tendrás que hacer una cosa u otra. Por otra parte la clase Date se está considerando obsoleta en java desde que se lanzó el paquete java.time, creo que en principio es preferible usar las clases de este paquete a no ser que estés usando una versión de java antigua que no la soporte. Salu2

Yager2222

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Re:AYUDA: obtener la fecha actual en formato java.sql.Date
« Respuesta #2 : 23 de Mayo 2020, 16:33 »
Gracias por la aclaración respecto al foro, intentaré cumplir las sugerencias la próxima vez.

La fecha en la base de datos está en formato DATE que es como me la pidieron en clase.

Y ahora mismo tengo esta estructura:

Venta.java
Código: [Seleccionar]
package beans;

import java.sql.Date;

public class Venta {

private int idVenta;
private int idCliente;
private int idLibro;
private Date fecha;
private String autor;
private int idTema;
private int isbn;
private int paginas;
private double precio;
private String titulo;
private String usuario;
private String password;
private String email;
private int telefono;

public Venta() {
super();
}

public Venta(int idVenta, int idCliente, int idLibro, Date fecha) {
super();
this.idVenta = idVenta;
this.idCliente = idCliente;
this.idLibro = idLibro;
this.fecha = fecha;

}
public int getIdVenta() {
return idVenta;
}
public void setIdVenta(int idVenta) {
this.idVenta = idVenta;
}
public int getIdCliente() {
return idCliente;
}
public void setIdCliente(int idCliente) {
this.idCliente = idCliente;
}
public int getIdLibro() {
return idLibro;
}
public void setIdLibro(int idLibro) {
this.idLibro = idLibro;
}
public Date getFecha() {
return fecha;
}
public void setFecha(Date fecha) {
this.fecha = fecha;
}

GestionVe.java

Código: [Seleccionar]
ackage modelo;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import beans.Venta;

public class GestionVe {

Datos cn = new Datos();
    Connection con;
    PreparedStatement ps;
    ResultSet rs;
   
public void registrarVenta(Venta v) {
try{
String sql="insert into ventas (idCliente,idLibro,fecha)";
sql+="values (?,?,?)";
con=cn.conexion();
PreparedStatement ps=con.prepareStatement(sql);
ps.setInt(1,v.getIdCliente());
ps.setInt(2,v.getIdLibro());
ps.setDate(3,v.getFecha());
ps.execute();
}
catch(SQLException ex){
ex.printStackTrace();
}
}
}

Controller.java
Donde tengo un switch y una de las opciones es:
Código: [Seleccionar]
                case "doVenta":
                   
                    Venta v=new Venta(0, Integer.parseInt(request.getParameter("idCliente")),
                    Integer.parseInt(request.getParameter("idLibro")), **fecha** ) {
};
                    gventas.registrarVenta(v);
                   
                    break;

Saludos y gracias

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2531
    • Ver Perfil
Re:AYUDA: obtener la fecha actual en formato java.sql.Date
« Respuesta #3 : 24 de Mayo 2020, 13:07 »
Buenas, si te han pedido usar Date para introducir una fecha en base de datos mysql tienes que usar java.sql.Date que es una subclase de Date, y java.sql.Timestamp para la hora si tienes que introducir la hora. He encontrado estos ejemplos que creo pueden ayudar

Para crear un java.sql.Date a partir de un Date la idea sería esta:

Código: [Seleccionar]
public class MainClass {

  public static void main(String[] args) {
    java.util.Date utilDate = new java.util.Date();
    java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
    System.out.println("utilDate:" + utilDate);
    System.out.println("sqlDate:" + sqlDate);

  }

}


Y para insertar en la base de datos la idea sería esta:

Código: [Seleccionar]

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
 
public class EjemploInsertarFecha {
public static void main(String args[]){
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/demo","root","root");

java.util.Date date=new java.util.Date();

java.sql.Date sqlDate=new java.sql.Date(date.getTime());
java.sql.Timestamp sqlTime=new java.sql.Timestamp(date.getTime());

PreparedStatement ps=con.prepareStatement("insert into baseDatos.Fecha (date,time) values(?,?)");
ps.setDate(1,sqlDate);
ps.setTimestamp(2,sqlTime);
ps.executeUpdate();

ps.close();
con.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
« última modificación: 24 de Mayo 2020, 13:12 de Ogramar »

 

Esto es un laboratorio de ideas...
Aprender a programar

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".