Erro ao inserir dado no banco [RESOLVER]

4 respostas
brunorota

Olá galera

Estou tentando iserir uns dados no banco e nao ta dando certo

Oq tem de errado no código

tabela no banco
CREATE TABLE  `monitoria`.`pessoas` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nome` varchar(40) NOT NULL,
  `endereco` varchar(40) NOT NULL,
  `cpf` varchar(12) NOT NULL,
  `telefone` varchar(12) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1
método para adicionar dado no banco
public void addPessoa(Pessoa p){
		
		String sql = "INSERT INTO pessoas(nome, endereco, cpf, telefone) VALUES (????)";
		
		try{
			Connection conn = ConnectionDB.getConnection();
			PreparedStatement pstm = conn.prepareStatement(sql);
			
			pstm.setString(1, p.getNome());
			pstm.setString(2, p.getEndereco());
			pstm.setString(3, p.getCpf());
			pstm.setString(4, p.getTelefone());
			
			System.out.println("execute AddPessoa");
			pstm.execute();
			
			
		}catch(Exception e){
			e.printStackTrace();
		}
	}
e o seguinte erro
java.sql.SQLException: Column count doesn't match value count at row 1
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542)
	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1734)
	at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:995)

jah vi e revi e nao acho o erro disso

se alguem puder ajudar

agradeço desde já

Att.

4 Respostas

marciomarinho

Tá faltando as vírgulas no seu values

String sql = “INSERT INTO pessoas(nome, endereco, cpf, telefone) VALUES (?,?,?,?)”;

http://www.java2s.com/Code/Java/Database-SQL-JDBC/InsertRecordsUsingPreparedStatement.htm

[]'s

leorbarbosa

Prezado,

voce se esqueceu de contas as interrogações:

(?, ?, ?, ?)

C

Bom dia

Verifiquei em seu código uma coisa, nesta linha:

String sql = "INSERT INTO pessoas(nome, endereco, cpf, telefone) VALUES (????)";

O Correto é assim:

String sql = "INSERT INTO pessoas(nome, endereco, cpf, telefone) VALUES (?, ?, ?, ?)";

Falou.

brunorota

Eh eu vi esse negocio

Duro tem dia q nao vai uiahuiah

Acho fikei procurando o erro, e o erro ta na maletida ,

Pior q eu nem me toquei

valew a todos ae

Muito obrigado

Criado 25 de maio de 2010
Ultima resposta 25 de mai. de 2010
Respostas 4
Participantes 4