Cita de: Mitsu en 21 Marzo 2014, 14:20 PMEstoy muy agradecido mitsu. Voy a implementarlo y te cuento
Muchas gracias y ante cualquier duda, ya sabes que tienes que elegir ElHacker
Respecto a tu pregunta, yo haría lo siguiente:
- Asociar las fechas a un ID_USUARIO que será la PK.
Así sería muy fácil. Primero obtenemos los registros por el ID_USUARIO. Una vez que tengamos los registros (las fechas) podremos trabajar fácilmente.
Sería algo así, aclaro que no lo he probado y quizás debe tener algunos errores, de eso ya te encargas tú. Espero hayas aprendido a cómo realizarlo.Código (=java) [Seleccionar]
public boolean validarLicencia(long id) throws SQLException {
try {
String sentencia = "SELECT ID1, ID2 FROM TUTABLA WHERE ID_USUARIO = ?";
Map mapaUsuario = obtenerMapaPorUserID(sentencia, id);
} catch (SQLException ex) { throw ex; }
finally { /* cierras flujos*/ }
Long id2 = (Long) mapaUsuario.get(0).get("id2"); // obtiene el valor asociado a la llave 'id2' del Map 'mapaUsuario'
if(mapaUsuario = null && mapaUsuario.size() == 0) { return false; }
if (id2 == null) { // si el campo id2 es null en la tabla
Calendar calendario = Calendar.getInstance();
calendario.add(5,15) // la fecha de vencimiento es en 15 dias
Long fechaHoyMiliseg = cal.getTime().getTime(); // obtiene fecha en milisegunos
String sentencia = "UPDATE TUTABLA SET ID2 = ?";
ejecutarSentenciaPorUserId(sentencia, fechaHoyMiliseg);
return true; // informa que la licencia es valida
}
// Si existe el campo ID2
Calendar calendario = Calendar.getInstance();
Long fechaLimiteMiliseg = id2; // le asigna el valor de id2 recuperado del usuario
Long fechaHoyMiliseg = calendario.getTime().getTime();
if (fechaHoyMiliseg > fechaMiliteMiliseg) { // YA SE VENCIO LICENCIA!
String sentencia = "DELE FROM TUTABLA WHERE ID_USUARIO = ?";
ejecutarSentenciaPorUserId(sentencia, id);
return false; // informa que la licencia ya vencio
}
return true; // solo para que no de error ya que se debe de colocar el retorno
}
Método que obtiene un Map por id de usuario:Código (=java) [Seleccionar]
public Map obtenerMapaPorUserID(String sql, id) throws SQLException {
try {
// obtienes tu conexion y declaras previamente un preparedStatement
estatuto = conexion.preparedStatement(sql);
estatuto.setLong(1,user); // asigna el id a la consulta
ResultSet rs = estatuto.executeQuery();
Map<String llave, Long valor) mapaUsuario = new HashMap<>();
while(rs.next()) {
mapaUsuario.put("id1",rs.getLong("ID1"));
mapaUsuario.put("id2",rs.getLong("ID2"));
}
} catch (SQLException ex) { throw ex; }
finally { /* cierras flujos*/ }
return mapaUsuario; // en caso no haya coincidencias devolvera una lista vacia (mapaUsuario.size() == 0)
}
Método que ejecuta una sentencia por id de usuario:Código (=java) [Seleccionar]
public void ejecutarSentenciaPorUserId(String sentencia, long id) throws SQLException {
try {
// obtienes tu conexion y haces un executeUpdate();
} catch (SQLException ex) { throw ex; }
finally { /* cierras flujos*/ }
}