Boa tarde, todos !
Estou com problemas ao inserir dados no banco de dados utilizando JSF. Alguém poderia me ajudar, não estou conseguindo achar a causa do problema.
stack trace
javax.faces.el.EvaluationException: java.sql.SQLException: Column count doesn't match value count at row 1
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:787)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1252)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:498)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:394)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)
Caused by: java.sql.SQLException: Column count doesn't match value count at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3603)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3535)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1989)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2150)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2626)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2119)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1362)
at br.com.notas.persistencia.CursoDAO.adicionar(CursoDAO.java:24)
at br.com.notas.managedbeans.AlunoFaces.finalizarAdicaoAluno(AlunoFaces.java:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.el.parser.AstValue.invoke(AstValue.java:262)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:70)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
... 28 more
------------------------------------------------------------------------------------------------------------------------
ManagedBeans
@ManagedBean
@SessionScoped
public class AlunoFaces {
private String email;
private String senha;
private String mensagem;
private Aluno aluno;
AlunoDAO alunoDAO = new AlunoDAO();
CursoDAO cursoDAO = new CursoDAO();
public AlunoFaces() {
}
public String adicionarAluno() {
this.setAluno(new Aluno());
return "adicionandoAluno";
}
public String finalizarAdicaoAluno() throws SQLException, ClassNotFoundException {
boolean insereCurso = cursoDAO.adicionar(this.getAluno().getCurso());
boolean insereAluno = alunoDAO.adicionar(this.getAluno());
if (insereCurso && insereAluno) {
this.setMensagem("Aluno gravado com sucesso !");
this.aluno = null;
return "alunoAdcionado";
}else{
this.setMensagem("Não foi possível gravar o aluno ! ");
this.aluno = null;
return "alunoAdcionado";
}
}
public String efetuarLogin() throws SQLException, ClassNotFoundException {
if (alunoDAO.efetuarLogin(this.email, this.getSenha()) != null) {
this.aluno = (alunoDAO.efetuarLogin(email, senha));
return "irCadastroNotas";
} else {
this.setMensagem("Nome e/ou senha inválidos !");
return "naoIrCadastroNotas";
}
}
/**
* @return the nome
*/
public String getEmail() {
return email;
}
/**
* @param nome the nome to set
*/
public void setEmail(String email) {
this.email = email;
}
/**
* @return the senha
*/
public String getSenha() {
return senha;
}
/**
* @param senha the senha to set
*/
public void setSenha(String senha) {
this.senha = senha;
}
/**
* @return the mensagem
*/
public String getMensagem() {
return mensagem;
}
/**
* @param mensagem the mensagem to set
*/
public void setMensagem(String mensagem) {
this.mensagem = mensagem;
}
/**
* @return the aluno
*/
public Aluno getAluno() {
return aluno;
}
/**
* @param aluno the aluno to set
*/
public void setAluno(Aluno aluno) {
this.aluno = aluno;
this.aluno.setCurso(new Curso());
}
}
-----------------------------------------------------------------------------------------------------------------
AlunoDAO
public class AlunoDAO extends Conexao {
public boolean adicionar(Aluno aluno) throws SQLException, ClassNotFoundException {
CursoDAO cursoDAO = new CursoDAO();
PreparedStatement ps = getPrepareStatement("INSERT INTO aluno VALUES(?,?,?,?,?,?,?,?,?,?)");
ps.setString(1, aluno.getNome());
ps.setString(2, aluno.getEndereco());
ps.setString(3, aluno.getTelefone());
ps.setString(4, aluno.getCidade());
ps.setString(5, aluno.getEstado());
ps.setString(6, aluno.getSenha());
ps.setString(7, aluno.getEmail());
ps.setString(8, aluno.getBairro());
ps.setString(9, aluno.getInstituicao());
ps.setInt(10, cursoDAO.pegarID(aluno.getCurso().getNome()));
return ps.execute();
}
public boolean alterar(Aluno aluno) throws SQLException, ClassNotFoundException {
this.pegarID(aluno);
PreparedStatement ps = getPrepareStatement("UPDATE aluno SET nome = ?,endereco = ?,telefone = ?,cidade = ?,estado = ?,email = ?,bairro = ?,instituicao = ? WHERE idaluno = ?");
ps.setString(1, aluno.getNome());
ps.setString(2, aluno.getEndereco());
ps.setString(3, aluno.getTelefone());
ps.setString(4, aluno.getCidade());
ps.setString(5, aluno.getEstado());
ps.setString(6, aluno.getEmail());
ps.setString(7, aluno.getBairro());
ps.setString(8, aluno.getInstituicao());
ps.setInt(9, aluno.getCodigo());
return ps.execute();
}
private void pegarID(Aluno aluno) throws SQLException, ClassNotFoundException {
PreparedStatement ps = getPrepareStatement("SELECT idaluno FROM aluno WHERE nome = ?");
ps.setString(1, aluno.getNome());
ResultSet rs = ps.executeQuery();
if (rs.next()) {
aluno.setCodigo(rs.getInt("idaluno"));
}
}
public Aluno efetuarLogin(String email, String senha) throws SQLException, ClassNotFoundException {
Aluno aluno = new Aluno();
PreparedStatement ps = getPrepareStatement("SELECT * FROM aluno WHERE email = ? AND senha = ?");
ps.setString(1, email);
ps.setString(2, senha);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
aluno.setCodigo(rs.getInt("idaluno"));
aluno.setNome(rs.getString("nome"));
aluno.setEndereco(rs.getString("endereco"));
aluno.setTelefone(rs.getString("telefone"));
aluno.setCidade(rs.getString("cidade"));
aluno.setEstado(rs.getString("estado"));
aluno.setSenha(rs.getString("senha"));
aluno.setEmail(rs.getString("email"));
aluno.setBairro(rs.getString("bairro"));
aluno.setInstituicao(rs.getString("instituicao"));
return aluno;
}else{
return null;
}
}
}
----------------------------------------------------------------------------------------------------------
Classe aluno
public class Aluno implements java.io.Serializable {
private int codigo;
private String nome;
private String endereco;
private String telefone;
private String cidade;
private String estado;
private String senha;
private String email;
private String bairro;
private String instituicao;
private Curso curso;
/**
* @return the codigo
*/
public int getCodigo() {
return codigo;
}
/**
* @param codigo the codigo to set
*/
public void setCodigo(int codigo) {
this.codigo = codigo;
}
/**
* @return the nome
*/
public String getNome() {
return nome;
}
/**
* @param nome the nome to set
*/
public void setNome(String nome) {
this.nome = nome;
}
/**
* @return the endereco
*/
public String getEndereco() {
return endereco;
}
/**
* @param endereco the endereco to set
*/
public void setEndereco(String endereco) {
this.endereco = endereco;
}
/**
* @return the telefone
*/
public String getTelefone() {
return telefone;
}
/**
* @param telefone the telefone to set
*/
public void setTelefone(String telefone) {
this.telefone = telefone;
}
/**
* @return the cidade
*/
public String getCidade() {
return cidade;
}
/**
* @param cidade the cidade to set
*/
public void setCidade(String cidade) {
this.cidade = cidade;
}
/**
* @return the estado
*/
public String getEstado() {
return estado;
}
/**
* @param estado the estado to set
*/
public void setEstado(String estado) {
this.estado = estado;
}
/**
* @return the senha
*/
public String getSenha() {
return senha;
}
/**
* @param senha the senha to set
*/
public void setSenha(String senha) {
this.senha = senha;
}
/**
* @return the email
*/
public String getEmail() {
return email;
}
/**
* @param email the email to set
*/
public void setEmail(String email) {
this.email = email;
}
/**
* @return the bairro
*/
public String getBairro() {
return bairro;
}
/**
* @param bairro the bairro to set
*/
public void setBairro(String bairro) {
this.bairro = bairro;
}
/**
* @return the instituicao
*/
public String getInstituicao() {
return instituicao;
}
/**
* @param instituicao the instituicao to set
*/
public void setInstituicao(String instituicao) {
this.instituicao = instituicao;
}
/**
* @return the curso
*/
public Curso getCurso() {
return curso;
}
/**
* @param curso the curso to set
*/
public void setCurso(Curso curso) {
this.curso = curso;
}
}
--------------------------------------------------------------------------------------
CursoDAO
public class CursoDAO extends Conexao{
public boolean adicionar(Curso curso) throws SQLException, ClassNotFoundException {
PreparedStatement ps = getPrepareStatement("INSERT INTO curso VALUES(?,?)");
ps.setString(1, curso.getNome());
ps.setInt(2, curso.getPeriodo());
return ps.execute();
}
public int pegarID(String nome) throws SQLException, ClassNotFoundException {
int codigo = 0;
PreparedStatement ps = getPrepareStatement("SELECT idcurso WHERE nome = ?");
ps.setString(1, nome);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
codigo = rs.getInt("idcurso");
}
return codigo;
}
public boolean alterar(Curso curso) throws SQLException, ClassNotFoundException {
PreparedStatement ps = getPrepareStatement("UPDATE curso SET nome = ?,periodo = ?,dataProva = ? WHERE = ?");
ps.setString(1, curso.getNome());
ps.setInt(2, curso.getPeriodo());
ps.setInt(4, this.pegarID(curso.getNome()));
return ps.execute();
}
public boolean deletar(Curso curso) throws SQLException, ClassNotFoundException{
PreparedStatement ps = getPrepareStatement("DELETE FROM disciplina WHERE = ?");
ps.setInt(1, this.pegarID(curso.getNome()));
return ps.execute();
}
}
--------------------------------------------------------------------------------------------------------------------
classe Curso
public class Curso implements java.io.Serializable {
private int codigo;
private String nome;
private int periodo;
/**
* @return the codigo
*/
public int getCodigo() {
return codigo;
}
/**
* @param codigo the codigo to set
*/
public void setCodigo(int codigo) {
this.codigo = codigo;
}
/**
* @return the nome
*/
public String getNome() {
return nome;
}
/**
* @param nome the nome to set
*/
public void setNome(String nome) {
this.nome = nome;
}
/**
* @return the periodo
*/
public int getPeriodo() {
return periodo;
}
/**
* @param periodo the periodo to set
*/
public void setPeriodo(int periodo) {
this.periodo = periodo;
}
}
------------------------------------------------------------------------------
cadastroAluno.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Cadastro de Aluno</title>
</head>
<body>
<f:view>
<h:form>
<font color ="orange"><h1><h:outputText value="Cadastrar Alunos"/></h1></font>
<h:panelGrid columns="3">
<h:outputText value="Instituição:"/></br>
<h:inputText value="#{alunoFaces.aluno.instituicao}" size="60" maxlength="100"/>
<h:outputText value="Curso:"/></br>
<h:inputText value="#{alunoFaces.aluno.curso.nome}" size="60" maxlength="100"/>
<h:outputLabel value="Periodo:" for="semestre"/></br>
<h:selectOneMenu value="#{alunoFaces.aluno.curso.periodo}" id="semestre">
<f:selectItem itemValue="01"/>
<f:selectItem itemValue="02"/>
<f:selectItem itemValue="03"/>
<f:selectItem itemValue="04"/>
<f:selectItem itemValue="05"/>
<f:selectItem itemValue="06"/>
<f:selectItem itemValue="07"/>
<f:selectItem itemValue="08"/>
<f:selectItem itemValue="09"/>
<f:selectItem itemValue="10"/>
</h:selectOneMenu>
<h:outputText value="Nome:"/></br>
<h:inputText value="#{alunoFaces.aluno.nome}" size="47" maxlength="100"/>
<h:outputText value="Endereço:"/></br>
<h:inputText value="#{alunoFaces.aluno.endereco}" size="47" maxlength="8"/>
<h:outputText value="Bairro:"/></br>
<h:inputText value="#{alunoFaces.aluno.bairro}"/>
<h:outputText value="Cidade:"/></br>
<h:inputText value="#{alunoFaces.aluno.cidade}"/>
<h:outputText value="Estado:"/></br>
<h:inputText value="#{alunoFaces.aluno.estado}"/>
<h:outputText value="Telefone:"/></br>
<h:inputText value="#{alunoFaces.aluno.telefone}"/>
<h:outputText value="E-mail:"/></br>
<h:inputText value="#{alunoFaces.aluno.email}" size="47" maxlength="100"/>
<h:outputText value="Senha:"/></br>
<h:inputSecret value="#{alunoFaces.aluno.senha}"/>
</h:panelGrid>
<h:outputText value="#{alunoFaces.mensagem}" rendered="#{not empty alunoFaces.mensagem}"/>
<h:commandButton value="Voltar" action="voltar"/>
<h:commandButton value="Adicionar" action="#{alunoFaces.finalizarAdicaoAluno()}"/>
</h:form>
</f:view>
</body>
</html>