ex: org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback

12/02/2016

1

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
Responder

Posts

12/02/2016

Jothaz

Por favor imprima o conteúdo da variável sql e post.
Responder
Já resolví. Muito obrigada. Estava fazendo confusão com uma variável.
Responder

12/02/2016

Jothaz

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:


@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 );  
 } 
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira