ex: org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback
Minha aplicação está inserindo, gravando e excluindo, mas quando mando salvar depois de editar um registro me aparece essa exceção. Alguém poderia me ajudar, estou ficando maluca e não consigo ver onde estou errando.
Tenho este código na minha classe dao.
public int update(Falta falta) {
String autoriza = "";
if (falta.getAutoriza() != null) {
autoriza = "data_autoriza = :autoriza, ";
}
String sql = "UPDATE faltas "
+ "SET" + autoriza
+ "falta = :falta, tipo = :tipo, motivo = :motivo, "
+ "id_funcionario = :idFuncionario, "
+ "nome = :nome "
+ "WHERE id_falta = :idFalta";
Me gera a seguinte exceção:
ex: org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [UPDATE faltas SETfalta = ?, tipo = ?, motivo = ?, id_funcionario = ?, nome = ? WHERE id_falta = ?]; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= '2016-01-14', tipo = 'Falta', motivo = 'falta por motivo de doença do filho'' at line 1
Tenho este código na minha classe dao.
public int update(Falta falta) {
String autoriza = "";
if (falta.getAutoriza() != null) {
autoriza = "data_autoriza = :autoriza, ";
}
String sql = "UPDATE faltas "
+ "SET" + autoriza
+ "falta = :falta, tipo = :tipo, motivo = :motivo, "
+ "id_funcionario = :idFuncionario, "
+ "nome = :nome "
+ "WHERE id_falta = :idFalta";
Me gera a seguinte exceção:
ex: org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [UPDATE faltas SETfalta = ?, tipo = ?, motivo = ?, id_funcionario = ?, nome = ? WHERE id_falta = ?]; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= '2016-01-14', tipo = 'Falta', motivo = 'falta por motivo de doença do filho'' at line 1
Esmeraldina Silva
Curtidas 0
Respostas
Jothaz
12/02/2016
Por favor imprima o conteúdo da variável sql e post.
GOSTEI 0
Esmeraldina Silva
12/02/2016
Já resolví. Muito obrigada. Estava fazendo confusão com uma variável.
GOSTEI 0
Jothaz
12/02/2016
Sem querer ser chato, mas sendo chato, não é uma boa prática gerar as string de SQL como você esta usando, pois pode ficar vulnerável.
Use parâmetros:
Use parâmetros:
@Override public void update(Integer empid, Integer age) { String SQL = "UPDATE Employee SET age = :age WHERE empid = :empid"; SqlParameterSource namedParameters = new MapSqlParameterSource(); namedParameters.addValue("age", age); namedParameters.addValue("empid", empid); namedParameterJdbcTemplate.update(SQL, namedParameters); System.out.println("Updated Record with EMPID = " + empid ); }
GOSTEI 0