Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Yager2222 en 23 de Mayo 2020, 00:49
-
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?
private Date fecha;
¿Cómo se definiría la "fecha" dentro del siguiente constructor para sacar su valor?
Venta v=new Venta(0, Integer.parseInt(request.getParameter("idCliente")),
Integer.parseInt(request.getParameter("idLibro")), **fecha** ) {
};
gventas.registrarVenta(v);
Muchas gracias
Saludos
-
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
-
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
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
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:
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
-
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:
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:
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();
}
}
}