Fórum ex: org.springframework.jdbc.BadSqlGrammarException #535233

22/10/2015

0

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
Esmeraldina Silva

Esmeraldina Silva

Responder

Posts

22/10/2015

Jothaz

Acredito que o problema esteja em "= : motivo" da expressão:

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.
Responder

Gostei + 0

22/10/2015

Esmeraldina Silva

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?
Responder

Gostei + 0

22/10/2015

Jothaz

Post seu código e use as tags "</>" para ficar formatado e facilitar a ajuda.
Responder

Gostei + 0

22/10/2015

Esmeraldina Silva

<%@ 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>
Responder

Gostei + 0

22/10/2015

Jothaz

Post a parte do código onde é feita a atualização,senão fica impossível ajudar.
Responder

Gostei + 0

22/10/2015

Esmeraldina Silva

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));
Responder

Gostei + 0

22/10/2015

Esmeraldina Silva

Este problema já resolvemos. Tinha um erro de digitação. Obrigada.
Responder

Gostei + 0

23/10/2015

Esmeraldina Silva

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.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar