Hola Yager2222,
no sé si todavía lo necesitas, pero de todos modos.
Use el paquete Calender primero para obtener la instancia y luego la hora.
Y luego usalo en el constructor.
Esto debería verse como...
java.sql.Date fecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
Entonces el código final puede verse como asi:
Venta v=new Venta(0, Integer.parseInt(request.getParameter("idCliente")),
Integer.parseInt(request.getParameter("idLibro")), new java.sql.Date(Calendar.getInstance().getTime().getTime()) ) {
};
gventa.registrarVenta(v);
¿Cómo se inserta la fecha en MySQL desde java?
La siguiente es otra manera:
Inserta fechas, o más bien
datos en Java a una base de datos usando
PreparedStatement. El tutorial de oracle "oficial" sobre cómo lograr tal cosa se puede encontrar aquí:
https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.htmlUn ejemplo sobre cómo insertar una fecha usando
PreparedStatement:
final java.sql.Date fechaSQL = new java.sql.Date();
final java.sql.Timestamp horaSQL = new java.sql.Timestamp();
final PreparedStatement declaracionPreparada = connection.prepareStatement("insert into tblDates (date,time) values(?,?)");
declaracionPreparada.setDate(1,fechaSQL);
declaracionPreparada.setTimestamp(2,horaSQL);
declaracionPreparada.executeUpdate();
declaracionPreparada.close();
connection.close();
Tene en cuenta que el método
executeUpdate() en una instancia de
PreparedStatement devuelve un valor Integer que indica cuántas filas se vieron afectadas por la instrucción o devuelve el valor 0 para las instrucciones SQL que no devuelven nada. Puede ser conveniente utilizar ese valor para, por ejemplo, manejo de errores o registro simple solo por nombrar un par de ejemplos.
En términos ideales, vos utilizarías una declaración de bloque de recursos de
prueba además del manejo adecuado del error para garantizar la eliminación y el registro adecuados de los recursos, incluso en el caso de excepciones:
https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.htmlEjemplo:
public final void viewTable(final Connection con) throws SQLException {
final String query = "SELECT COF_NAME, SUP_ID, PRICE, SALES, TOTAL FROM COFFEES";
try (final Statement stmt = con.createStatement()) {
final ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
final String coffeeName = rs.getString("COF_NAME");
final int supplierID = rs.getInt("SUP_ID");
final float price = rs.getFloat("PRICE");
final int sales = rs.getInt("SALES");
final int total = rs.getInt("TOTAL");
logger.info(coffeeName + ", " + supplierID + ", " +
price + ", " + sales + ", " + total);
}
} catch (final SQLException e) {
logger._error_(e);
}
}
Este fragmento de código se toma de los documentos de Oracle enumerados aquí (
https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html), pero ligeramente modificado para incluir una interfaz de registro SLF4J (
http://www.slf4j.org/).
¿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);
No estoy seguro de lo que estás pidiendo con respecto a tu segunda pregunta. ¿Podrías dar más detalles? Estoy pensando que simplemente lo definirías como el objeto
Date que es. También puede convertir
java.sql.Date y
java.util.Date utilizando sus respectivos métodos y constructores. Por ejemplo, para convertir un
java.util.Date en un
java.sql.Date:
new java.sql.Date(utilDate.getTime());
Sin embargo, para el desarrollo de aplicaciones modernas, se recomienda que utilices una instancia de objeto
Calendar en su lugar:
https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.htmlO incluso mejor (realmente preferido), Joda-Time (
https://www.joda.org/joda-time/) (
java.time).
Además, si fuera tu, dejaría que Hibernate (
http://hibernate.org/) u otras implementaciones de JPA (
https://es.m.wikipedia.org/wiki/Java_Persistence_API) manejen la parte SQL de tu aplicación si estás trabajando con entidades/objetos específicos y mapeo de datos. La inclusión del Framework Spring hará que tu vida sea mucho más fácil (sin mencionar que hará que te contraten de manera mucho más interesante si podes trabajar en dicho marco):
https://spring.io/https://spring.io/projects/spring-data-jpaSaludos