bom esse é o meu metodo:
String timeStamp = new SimpleDateFormat("yyy-MM-dd hh:mm:ss").format(Calendar.getInstance().getTime());
String sql = "INSERT INTO computador_requisicao(idusuario,nome,data_requisicao,observacao) VALUES("+Sessao.getInstancia().getUsuario().getId()+",?,"+timeStamp+",?)";
try {
con.setAutoCommit(false);
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1, r.getNome());
stmt.setString(2, r.getMotivo());
stmt.executeUpdate();
stmt.close();
}
error:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '07:02:11,'a')' at line 1
`
eu sei que o problema está no date
no bd está como date
não faço ideia onde está errada a sintaxe.
LostSpirit:
bom esse é o meu metodo:
String timeStamp = new SimpleDateFormat("yyy-MM-dd hh:mm:ss").format(Calendar.getInstance().getTime());
String sql = "INSERT INTO computador_requisicao(idusuario,nome,data_requisicao,observacao) VALUES("+Sessao.getInstancia().getUsuario().getId()+",?,"+timeStamp+",?)";
try {
con.setAutoCommit(false);
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1, r.getNome());
stmt.setString(2, r.getMotivo());
stmt.executeUpdate();
stmt.close();
}
error:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '07:02:11,'a')' at line 1
`
eu sei que o problema está no date
no bd está como date
não faço ideia onde está errada a sintaxe.
resolvido
String timeStamp = new SimpleDateFormat("yyy-MM-dd hh:mm:ss").format(Calendar.getInstance().getTime());
String sql = "INSERT INTO computador_requisicao(idusuario,nome,data_requisicao,observacao) VALUES("+Sessao.getInstancia().getUsuario().getId()+",?,?,?)";
try {
con.setAutoCommit(false);
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1, r.getNome());
stmt.setString(2, timeStamp );
stmt.setString(3, r.getMotivo());
stmt.executeUpdate();
stmt.close();
Tem certeza que o formato é esse “yyy-MM-dd hh:mm:ss”? Não seria “yyyy-MM-dd hh:mm:ss”?
Uma dica a data corrente pode ser pega direto do banco assim não tem como o usuário alterar a data do sistema. Basta fazer isso:
String sql = "INSERT INTO computador_requisicao(idusuario,nome,data_requisicao,observacao) VALUES("+Sessao.getInstancia().getUsuario().getId()+",?,now(),?)";
1 curtida
smatt
Junho 26, 2019, 11:51am
#5
LostSpirit:
String sql = “INSERT INTO computador_requisicao(idusuario,nome,data_requisicao,observacao) VALUES(”+Sessao.getInstancia().getUsuario().getId()+",?,"+timeStamp+",?)";
Não é uma boa prática concatenar a String que será mandada como query ao DB. Coloque os values todos como "?" e mande os valores pelo stmt.setString ou setInt, setDouble etc. Fica mais fácil de entender e não deixa o código tão sujo. (Fica mais profissional:upside_down_face:)
Erro de sintaxe próximo às horas que você digitou. SeuSimpleDateFormat("yyy-MM-dd hh:mm:ss") ta faltando um y referente ao ano ai kkk só tem 3 y, sendo que ano são 4 dígitos.
guilherme-borges:
Uma dica a data corrente pode ser pega direto do banco assim não tem como o usuário alterar a data do sistema. Basta fazer isso:
String sql = "INSERT INTO computador_requisicao(idusuario,nome,data_requisicao,observacao) VALUES("+Sessao.getInstancia().getUsuario().getId()+",?,now(),?)";
vlw, do jeito que eu fiz funcionou normalmente também.
smatt:
LostSpirit:
String sql = “INSERT INTO computador_requisicao(idusuario,nome,data_requisicao,observacao) VALUES(”+Sessao.getInstancia().getUsuario().getId()+",?,"+timeStamp+",?)";
Não é uma boa prática concatenar a String que será mandada como query ao DB. Coloque os values todos como "?" e mande os valores pelo stmt.setString ou setInt, setDouble etc. Fica mais fácil de entender e não deixa o código tão sujo. (Fica mais profissional:upside_down_face:)
Erro de sintaxe próximo às horas que você digitou. SeuSimpleDateFormat("yyy-MM-dd hh:mm:ss") ta faltando um y referente ao ano ai kkk só tem 3 y, sendo que ano são 4 dígitos.
o problema não foi essa funcionou normalmente com a mesma sintaxe, a úncia coisa que eu fiz foi tirar a concatenação e setar ele no preparedstatment, depois que fiz isso sumiu o error.
Faça um teste mude a data do seu sistema operacional e veja se ele vai pegar a data corretamente. Normalmente o banco de dados fica em um servidor onde o usuário não tem acesso por isso falei para você passar a data corrente pelo SQL. Você entende a falha que existe no seu código?
1 curtida
realmente mano, funcionou, vlw mesmo.
vc poderia me dar um help como eu conseguiria pegar esse valor do bd e setar em uma string?
Normalmente quando você fizer o seu select
1 curtida
vlw man já marquei sua resposta como certa.
se tiver como me dar um help nisso:
como eu conseguiria pegar esse valor do bd e setar em uma string?
Você sabe buscar dados do banco?
1 curtida
sei sim select
setDate(rs.getDate(“data_requisicao”));
minha dúvida é pq é dateTime.
Geralmente eu faço assim:
setDate(rs.getTimestamp(“data_requisicao”).toLocalDateTime());
Só que eu uso o tipo LocalDateTime para minhas variáveis de data e hora
2 curtidas
vlwwwwwwwwwwwwwwww c é o cara.
1 curtida