Estou criando um projeto de Estacionamento em java web, e dentro desse projeto, um dos cadastros que estou realizando é de controle (data, horaEntrada, horaSaida, valorHora, tempoPermanencia, valorTotal), sendo que dentro de controle quero cadastrar no banco de dados(mysql) a hora atual (hora do PC), como faço isso ?
Como o banco é mysql, coloca “NOW()” no parametro da hora dentro do sql de insert.
Ou se não quiser ficar amarrado ao BD você pode fazer o seguinte
Date d = new Date();//pega a hora atual
PreparedStatement ps = con.prepareStatement("insert into tabela (data) values (?)");
ps.setDate(1, new java.sql.Date(d.getTime()));
ps.execute();
Não consegui, Neste meu caso como faço ?
[b]public class ControleDAO {
public static Controle inserir(
String data, String horaEntrada, String horaSaida,
String valorHora, String valorTotal, String tempoPermanencia) {
Controle controle = null;
try {
// Criação do insert
String sql = "INSERT INTO controle"
+ "(data,horaEntrada,horaSaida,valorHora,"
+ "valorTotal,tempoPermanencia) "
+ "VALUES(?,?,?,?,?,?)";
Conexao conex = new Conexao(
"jdbc:mysql://localhost:3308/estacionamento",
"com.mysql.jdbc.Driver", "root", "alunolab");
Connection con = conex.obterConexao();
PreparedStatement comando =
con.prepareStatement(sql);
comando.setString(1, data);
comando.setString(2, horaEntrada);
comando.setString(3, horaSaida);
comando.setString(4, valorHora);
comando.setString(5, valorTotal);
comando.setString(6, tempoPermanencia);
comando.executeUpdate();
} catch (Exception e) {
System.out.println(e.getMessage());
}
controle = new Controle(data, horaEntrada, horaSaida, valorHora,
valorTotal, tempoPermanencia);
return controle;
}
public static Controle buscarPorData(String data) {
Controle controle = null;
try {
String sql = "Select * from controle where "
+ "data like '" + data + "'";
Conexao conex = new Conexao(
"jdbc:mysql://localhost:3308/estacionamento",
"com.mysql.jdbc.Driver", "root", "alunolab");
Connection con = conex.obterConexao();
Statement comando = con.createStatement();
ResultSet rs = comando.executeQuery(sql);
if (rs.next()) {
controle = new Controle(
rs.getString("data"),
rs.getString("horaEntrada"),
rs.getString("horaSaida"),
rs.getString("valorHora"),
rs.getString("valorTotal"),
rs.getString("tempoPermanencia"));
}
rs.close();
comando.close();
con.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
return controle;
}
public static Controle buscarTodos() {
Controle controle = null;
try {
String sql = "Select * from controle ";
Conexao conex = new Conexao(
"jdbc:mysql://localhost:3308/estacionamento",
"com.mysql.jdbc.Driver", "root", "alunolab");
Connection con = conex.obterConexao();
Statement comando = con.createStatement();
ResultSet rs = comando.executeQuery(sql);
if (rs.next()) {
controle = new Controle(
rs.getString("data"),
rs.getString("horaEntrada"),
rs.getString("horaSaida"),
rs.getString("valorHora"),
rs.getString("valorTotal"),
rs.getString("tempoPermanencia"));
}
rs.close();
comando.close();
con.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
return controle;
}
}
[/b]
Ah tá explicado, bom, eu sugiro que você crie um campo do tipo date (pois ele já armazena todas as informações), pois facilita na hora de manipulá-lo, ao invés de gravar os pedaços da data!
Mas respondendo a sua pergunta, para pegar os pedaços da data, utilize a classe Calendar
Calendar calendar = Calendar.getInstance();//pega hora atual
calendar.get(Calendar.DAY_OF_MONTH); //pega o dia do mês
para saber como pegar as outras “partes” da data, dê uma olhada na documentação.