ex: org.springframework.jdbc.BadSqlGrammarException
Estou tentando alimentar uma tabela, mas quando mando salvar dá esse maldito erro:
ERROR br.com.devmedia.appfinal.web.controller.GenericExceptionController:49 - Request: /app-final_Falta/falta/save lançou a ex: org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [UPDATE faltas SET falta = ?, SET nome = ?, id_funcionario = ?, motivo = : motivo 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 'SET nome = null, id_funcionario = 1, motivo = : motivo WHERE id_falta = 1' at line 1
ERROR br.com.devmedia.appfinal.web.controller.GenericExceptionController:49 - Request: /app-final_Falta/falta/save lançou a ex: org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [UPDATE faltas SET falta = ?, SET nome = ?, id_funcionario = ?, motivo = : motivo 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 'SET nome = null, id_funcionario = 1, motivo = : motivo WHERE id_falta = 1' at line 1
Esmeraldina Silva
Curtidas 0
Respostas
Jothaz
22/10/2015
Acredito que o problema esteja em "= : motivo" da expressão:
Troque:
Por:
Se você esta usando um exemplo pronto, verifique a sintaxe.
Troque:
UPDATE faltas SET falta = ?, SET nome = ?, id_funcionario = ?, motivo = : motivo WHERE id_falta = ?
Por:
UPDATE faltas SET falta = ?, SET nome = ?, id_funcionario = ?, motivo = ? WHERE id_falta = ?
Se você esta usando um exemplo pronto, verifique a sintaxe.
GOSTEI 0
Esmeraldina Silva
22/10/2015
Estou tentando achar o que tá errado na sintaxe.
Agora descobri outro problema em outra aplicação. Informo todos os dados na tela e clico no botão salvar, não aparece nenhuma mensagem, mas simplesmente não grava nada na tabela. Alguém pode me dar uma dica?
Agora descobri outro problema em outra aplicação. Informo todos os dados na tela e clico no botão salvar, não aparece nenhuma mensagem, mas simplesmente não grava nada na tabela. Alguém pode me dar uma dica?
GOSTEI 0
Jothaz
22/10/2015
Post seu código e use as tags "</>" para ficar formatado e facilitar a ajuda.
GOSTEI 0
Esmeraldina Silva
22/10/2015
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Funcionários</title>
<link rel="stylesheet" type="text/css" href="<c:url value="/css/style.css"/>">
<script type="text/javascript" src="<c:url value="/js/functions.js" />"></script>
</head>
<body>
<c:import url="menu.jsp" />
<fieldset class='master'>
<c:url var="save" value="/funcionario/save" />
<form:form modelAttribute="funcionario" action="$" method="post">
<form:errors cssClass="errorblock" path="*" element="div"/>
<form:hidden path="idFuncionario" />
<fieldset class='grupo'>
<legend> Funcionário </legend>
<div class='campo'>
<form:label path="nome">Nome</form:label>
<br>
<form:input path="nome" type="text" size='40' id="nome" />
</div>
<div class='campo'>
<form:label path="salario">Salario</form:label>
<br>
<form:input path="salario" type="text" size='20' />
</div>
<div class='campo'>
<form:label path="dataEntrada">Data de Entrada</form:label>
<br>
<form:input path="dataEntrada" type="date" />
</div>
<div class='campo'>
<form:label path="dataSaida">Data de Saída</form:label>
<br>
<form:input path="dataSaida" type="date" />
</div>
<div class='campo'>
<form:label path="dataNasc">Data de Nascimento</form:label>
<br>
<form:input path="dataNasc" type="date" />
</div>
<div class='campo'>
<form:label path="rg">CI</form:label>
<br>
<form:input path="rg" type="text" size='10' />
</div>
<div class='campo'>
<form:label path="orgao">Órgão</form:label>
<br>
<form:input path="orgao" type="text" size='10' />
</div>
<div class='campo'>
<form:label path="dataExp">Expedição</form:label>
<br>
<form:input path="dataExp" type="date" />
</div>
<div class='campo'>
<form:label path="cpf">CPF</form:label>
<br>
<form:input path="cpf" type="text" size='14' />
</div>
<div class='campo'>
<form:label path="pai">Pai</form:label>
<br>
<form:input path="pai" type="text" size='30' />
</div>
<div class='campo'>
<form:label path="mae">Mãe</form:label>
<br>
<form:input path="mae" type="text" size='30' />
</div>
<div class='campo'>
<form:label path="email">E-mail</form:label>
<br>
<form:input path="email" type="text" size='30' />
</div>
<div class='campo'>
<form:label path="tel1">Tel Residencial</form:label>
<br>
<form:input path="tel1" type="text" size='10' />
</div>
<div class='campo'>
<form:label path="tel2">Tel Comercial</form:label>
<br>
<form:input path="tel2" type="text" size='10' />
</div>
<br>
<div class='campo'>
<form:label path="tel3">Celular</form:label>
<br>
<form:input path="tel3" type="text" size='10' />
</div>
<div class='campo'>
<form:label path="naturalidade">Naturalidade</form:label>
<br>
<form:input path="naturalidade" type="text" size='10' />
</div>
<div class='campo'>
<form:label path="nacionalidade">Nacionalidade</form:label>
<br>
<form:input path="nacionalidade" type="text" size='10' />
</div>
<div class='campo'>
<form:label path="estadocivil">Estado Civil</form:label>
<br>
<form:input path="estadocivil" type="text" size='10' />
</div>
<div class='campo'>
<form:label path="filho1">Filho</form:label>
<br>
<form:input path="filho1" type="text" size='30' />
</div>
<div class='campo'>
<form:label path="filho2">Filho</form:label>
<br>
<form:input path="filho2" type="text" size='30' />
</div>
<div class='campo'>
<form:label path="filho3">Filho</form:label>
<br>
<form:input path="filho3" type="text" size='30' />
</div>
<div class='campo'>
<form:label path="ctps">CTPS</form:label>
<br>
<form:input path="ctps" type="text" size='10' />
</div>
<div class='campo'>
<form:label path="serie">Série</form:label>
<br>
<form:input path="serie" type="text" size='5' />
</div>
<div class='campo'>
<form:label path="pis">PIS</form:label>
<br>
<form:input path="pis" type="text" size='20' />
</div>
<div class='campo'>
<form:label path="titulo">Título</form:label>
<br>
<form:input path="titulo" type="text" size='15' />
</div>
<div class='campo'>
<form:label path="zona">Zona</form:label>
<br>
<form:input path="zona" type="text" size='5' />
</div>
<div class='campo'>
<form:label path="secao">Seção</form:label>
<br>
<form:input path="secao" type="text" size='5' />
</div>
<div class='campo'>
<form:label path="vrefeicao">Vale Refeição?</form:label>
<br>
<form:input path="vrefeicao" type="text" size='1' />
</div>
<div class='campo'>
<form:label path="vtransporte">Vale Transporte?</form:label>
<br>
<form:input path="vtransporte" type="text" size='1' />
</div>
<div class='campo'>
<form:label path="escolaridade">Escolaridade</form:label>
<br>
<form:input path="escolaridade" type="text" size='15' />
</div>
<div class='campo'>
<form:label path="carthabilitacao">Cart.Motorista</form:label>
<br>
<form:input path="carthabilitacao" type="text" size='15' />
</div>
<div class='campo'>
<form:label path="problemasaude">Problema Saúde?</form:label>
<br>
<form:input path="problemasaude" type="text" size='1' />
</div>
<input type="button" value="Localizar" onclick="localizarPorNome();">
</fieldset>
<fieldset class='grupo'>
<legend> Cargo </legend>
<div class='campo'>
<form:label path="cargo">Cargo</form:label>
<br>
<form:select id="cargo" path="cargo">
<form:option value="" label="--- Select ---" />
<form:options items="$" itemValue="idCargo"
itemLabel="cargo" />
</form:select>
<input type="button" onclick="localizarPorCargo();"
value="Localizar">
</div>
</fieldset>
<br>
<fieldset class="grupo">
<form:hidden path="endereco.idEndereco" />
<legend> Endereço </legend>
<div class='campo'>
<form:label path="endereco.logradouro">Logradouro</form:label>
<br>
<form:input path="endereco.logradouro" type="text" size='30' />
<form:errors cssClass="error" path="endereco.logradouro" element="div"/>
</div>
<div class='campo'>
<form:label path="endereco.numero">Número</form:label>
<br>
<form:input path="endereco.numero" type="text" size='9' />
<form:errors cssClass="error" path="endereco.numero" element="div"/>
</div>
<div class='campo'>
<form:label path="endereco.complemento">Complemento</form:label>
<br>
<form:input path="endereco.complemento" type="text" size='30' />
<div> </div>
</div>
<div class='campo'>
<form:label path="endereco.bairro">Bairro</form:label>
<br>
<form:input path="endereco.bairro" type="text" size='30' />
<form:errors cssClass="error" path="endereco.bairro" element="div"/>
</div>
<div class='campo'>
<form:label path="endereco.cidade">Cidade</form:label>
<br>
<form:input path="endereco.cidade" type="text" size='20' />
<form:errors cssClass="error" path="endereco.cidade" element="div"/>
</div>
<div class='campo'>
<form:label path="endereco.estado">Estado</form:label>
<br>
<form:input path="endereco.estado" type="text" size='2' />
<form:errors cssClass="error" path="endereco.estado" element="div"/>
</div>
</fieldset>
<br>
<div>
<input type="submit" value="Salvar"> <input type="reset"
value="Limpa">
</div>
</form:form>
</fieldset>
<fieldset class='master'>
<legend>Funcionários</legend>
<table style="width: 960px;">
<tr>
<th>Código</th>
<th>Nome</th>
<th>Salário</th>
<th>Data de Entrada</th>
<th>Data de Saída</th>
<th>Cargo</th>
<th>Ação</th>
</tr>
<c:forEach var="f" items="$" varStatus="i">
<tr bgcolor='${i.count % 2 != 0 ? '#f1f1f1' : 'white'}'>
<td>${f.idFuncionario}</td>
<td>${f.nome}</td>
<td><fmt:formatNumber value="${f.salario}" currencySymbol="R$"
maxFractionDigits="2" type="currency" /></td>
<td><fmt:parseDate var="dtEntrada" value="${f.dataEntrada}"
pattern="yyyy-MM-dd" /> <fmt:formatDate value="$"
dateStyle="full" /></td>
<td><fmt:parseDate var="dtSaida" value="${f.dataSaida}"
pattern="yyyy-MM-dd" /> <fmt:formatDate value="$" /></td>
<td>${f.cargo.cargo}</td>
<td><c:url var="update"
value="/funcionario/update/${f.idFuncionario}"></c:url> <a
href="$" title="Ver/Editar">ⓥ</a> | <c:url
var="delete" value="/funcionario/delete/${f.idFuncionario}"></c:url>
<a href="$" title="Delete">ⓧ</a></td>
</c:forEach>
</table>
</fieldset>
</body>
</html>GOSTEI 0
Jothaz
22/10/2015
Post a parte do código onde é feita a atualização,senão fica impossível ajudar.
GOSTEI 0
Esmeraldina Silva
22/10/2015
Desculpe...
public int update(Funcionario funcionario) {
String dataSaida = "";
if (funcionario.getDataSaida() != null) {
dataSaida = "data_saida = :dataSaida, ";
}
String sql = "UPDATE funcionarios "
+ "SET " + dataSaida
+ "nome = :nome, salario = :salario, id_cargo = :idCargo, "
+ "id_endereco = :idEndereco, data_entrada = :dataEntrada, "
//
+ "dtnasc = :dataNasc, rg = :Rg, orgao = :Orgao, exp = :dataExp, "
+ "cpf = :Cpf, mae = :Mae, pai = :Pai,email = :Email, "
+ "tel1 =:Tel1,tel2 =:Tel2,tel3 =:Tel3,naturalidade = :Naturalidade, "
+ "nacionalidade = :Nacionalidade,estadocivil = :Estadocivil, "
+ "filho1 =:Filho1, filho2 =:Filho2, filho3 =:Filho3,ctps = :Ctps, "
+ "serie = :Serie,pis = :Pis,titulo = :Titulo,zona = :Zona, "
+ "secao =:Secao,vrefeicao =:Vrefeicao,vtransporte =:Vtransporte, "
+ "escolaridade =:Escolaridade,carthabilitacao =:Carthabilitacao, "
+ "problemasaude =:Problemasaude "
+ "WHERE id_funcionario = :idFuncionario";
return super.update(sql, parameterSource(funcionario));GOSTEI 0
Esmeraldina Silva
22/10/2015
Este problema já resolvemos. Tinha um erro de digitação. Obrigada.
GOSTEI 0
Esmeraldina Silva
22/10/2015
org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL []; Column 'dtnasc' cannot be null; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'dtnasc' cannot be null
Já revisei tudo a respeito deste campo 'dtnasc' e não consegui ver nada de errado. ´Me dá aí uma dica?
A aplicação está alterando e excluido, mas na inclusão não tá gravando e não dá nenhuma mensagem em tempo de execução. No console verifiquei esse erro.
Já revisei tudo a respeito deste campo 'dtnasc' e não consegui ver nada de errado. ´Me dá aí uma dica?
A aplicação está alterando e excluido, mas na inclusão não tá gravando e não dá nenhuma mensagem em tempo de execução. No console verifiquei esse erro.
GOSTEI 0