[RESOLVIDO]java.lang.RuntimeException: java.sql.SQLException

2 respostas
L

Olá pessoal estou com o seguinte problema:

Grave: Servlet.service() for servlet [br.com.OdontoEstetica.jdbc.Servlet.ServletAgendaConsulta] in context with path [/OdontoEstetica] threw exception
java.lang.RuntimeException: java.sql.SQLException: Column count doesn't match value count at row 1
	at br.com.OdontoEstetica.jdbc.DAO.ConsultasDAO.adiciona(ConsultasDAO.java:55)
	at br.com.OdontoEstetica.jdbc.Servlet.ServletAgendaConsulta.service(ServletAgendaConsulta.java:112)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
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:3609)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
	at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1362)
	at br.com.OdontoEstetica.jdbc.DAO.ConsultasDAO.adiciona(ConsultasDAO.java:52)
	... 18 more

classe java

package br.com.OdontoEstetica.jdbc.DAO;

/**
 * @author Lilian
 *
 */

import java.sql.Connection;

import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import br.com.OdontoEstetica.jdbc.ConnectionFactory;
import br.com.OdontoEstetica.jdbc.modelo.Consultas;


public class ConsultasDAO {
private Connection connection;
	
	public ConsultasDAO(){
		this.connection = new ConnectionFactory().getConnection();
	}
	
	public void adiciona(Consultas consultas){
		
		String sql = "insert into agenda_consulta(codPaciente, nomePaciente, rg, cpf, datanascimento, endereco, telefone, codFuncionario, nomeFuncionario, servico, dataHoraConsulta, codProduto, nomeProduto, preco, status) values(?, ?, ?, ?, ? , ?, ?, ?, ?, ?, ?, ? , ?) ";

		try{
			
			// PreparedStatement para inserção
			PreparedStatement stmt = connection.prepareStatement(sql);
			
			//seta os valores
			
			stmt.setInt(1, consultas.getCodPaciente());
			stmt.setString(2, consultas.getNomePaciente());
			stmt.setString(3,consultas.getRG());
			stmt.setString(4,consultas.getCPF());
			stmt.setDate(5,(java.sql.Date) new Date(consultas.getDataNascimento().getTimeInMillis()));
			stmt.setString(6,consultas.getEnderecoPaciente());
			stmt.setLong(7,consultas.getTelefonePaciente());
			stmt.setString(8,consultas.getServico());
			stmt.setDate(9, (java.sql.Date) new Date(consultas.getDataNascimento().getTimeInMillis()));
			stmt.setInt(10, consultas.getCodProduto());
			stmt.setString(11,consultas.getNomeProduto());
			stmt.setDouble(12, consultas.getValorConsulta());
			stmt.setBoolean(13,consultas.isStatus());
			
			
			//executa
			stmt.execute();
			stmt.close();
		}catch (SQLException e){
			throw new RuntimeException(e);
		}
	}
	
	public void altera (Consultas consultas){
		
		String sql = "update agenda_consulta set codPaciente= ?, nomePaciente= ?, rg= ?, cpf= ?, datanascimento= ?, endereco= ?, telefone= ?, codFuncionario= ?, nomeFuncionario= ?, servico= ?, dataHoraConsulta= ?, codProduto= ?, nomeProduto= ?, preco= ?, status where codConsulta= ?";
		
		try{
			PreparedStatement stmt = connection.prepareStatement(sql);
			
			stmt.setInt(1, consultas.getCodPaciente());
			stmt.setString(2, consultas.getNomePaciente());
			stmt.setString(3,consultas.getRG());
			stmt.setString(4,consultas.getCPF());
			stmt.setDate(5, (java.sql.Date) new Date(consultas.getDataNascimento().getTimeInMillis()));
			stmt.setString(6,consultas.getEnderecoPaciente());
			stmt.setLong(7,consultas.getTelefonePaciente());
			stmt.setString(8,consultas.getServico());
			stmt.setDate(9, (java.sql.Date) new Date(consultas.getDataNascimento().getTimeInMillis()));
			stmt.setInt(10, consultas.getCodProduto());
			stmt.setString(11,consultas.getNomeProduto());
			stmt.setDouble(12, consultas.getValorConsulta());
			stmt.setBoolean(13,consultas.isStatus());
			stmt.setInt(14,consultas.getCodConsulta());
			
			stmt.execute();
			stmt.close();
		}catch (SQLException e){
			throw new RuntimeException(e);
		}
	}
	
	public void remove(Consultas consultas){
		
		try{
			
			PreparedStatement stmt = connection.prepareStatement("delete from agenda_consulta where codConsulta= ?");
			stmt.setInt(1,consultas.getCodConsulta());
			stmt.execute();
			stmt.close();
		}catch (SQLException e){
			throw new RuntimeException(e);
		}
			
		}	
	
}

Alguem poderia me ajudar?

2 Respostas

A

Neste insert você tem 15 campos mas só tem 13 parâmetros

String sql = "insert into agenda_consulta(codPaciente, nomePaciente, rg, cpf, datanascimento, endereco, telefone, codFuncionario, nomeFuncionario, servico, dataHoraConsulta, codProduto, nomeProduto, preco, status) values(?, ?, ?, ?, ? , ?, ?, ?, ?, ?, ?, ? , ?) ";
L

[quote=ADEMILTON]Neste insert você tem 15 campos mas só tem 13 parâmetros

String sql = "insert into agenda_consulta(codPaciente, nomePaciente, rg, cpf, datanascimento, endereco, telefone, codFuncionario, nomeFuncionario, servico, dataHoraConsulta, codProduto, nomeProduto, preco, status) values(?, ?, ?, ?, ? , ?, ?, ?, ?, ?, ?, ? , ?) ";

vlw, era isso mesmo estava passando campos a mais, tirei os campos que sobravam e deu certo.

Criado 16 de junho de 2012
Ultima resposta 16 de jun. de 2012
Respostas 2
Participantes 2