[Problema Mysql+Java]

6 respostas
ken420

Pessoal estou tentando fazer um cadastro em meu banco de dados e ele dispara um erro quando clico no botao de cadastro…
vejam abaixo o erro

run:
java.sql.SQLException: Column count doesn't match value count at row 1
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1056)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3376)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3308)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1837)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1961)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2543)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1737)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2022)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1940)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1925)
        at br.com.Papelaria.Cliente.ClienteControl.cadastrarCliente(ClienteControl.java:68)

e vejam meu codigo como esta

try
        {
            pstm = bd.conectar().prepareStatement(cadastraCliente);
            pstm.setString(1, cliente.getNome());
            pstm.setString(2, cliente.getEndereco());
            pstm.setString(3, cliente.getBairro());
            pstm.setString(4, cliente.getCidade());
            pstm.setString(5, cliente.getUf());
            pstm.setString(6, cliente.getCep());
            pstm.setString(7, cliente.getTelefone());
            pstm.setString(8, cliente.getCelular());
            pstm.setString(9, cliente.getDatanasc());
            pstm.setString(10, cliente.getCpf());
            pstm.setString(11, cliente.getRg());
            pstm.setString(12, cliente.getEstadoC());
            pstm.setString(13, cliente.getEmail());
            pstm.setString(14, cliente.getEmpressa());
            pstm.setString(15, cliente.getProfissao());
            pstm.setString(16, cliente.getSalario());
            pstm.executeUpdate();         !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! O ERRO OCORRE AQUI!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            bd.desconectar();
        }

abaixo a conexao

String cadastraCliente = "INSERT INTO CLIENTE (nome, endereco, bairro, " +
            "cidade, uf, cep, telefone, celular, datanasc, cpf, rg , estadoC, email, empresa"+
            "profissao, salario) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

estou fazendo alguma coissa errada pessoal? vlw pela forca abracao!

6 Respostas

F

Faltou uma vírgula!!!

Veja depois de empresa! Coloquei ela abaixo!

String cadastraCliente = "INSERT INTO CLIENTE (nome, endereco, bairro, " +   
        "cidade, uf, cep, telefone, celular, datanasc, cpf, rg , estadoC, email, empresa,"+   
        "profissao, salario) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

:lol:

Abç

Marco A.

meucci
String cadastraCliente = "INSERT INTO CLIENTE (nome, endereco, bairro, " +
            "cidade, uf, cep, telefone, celular, datanasc, cpf, rg , estadoC, email, empresa"+
            "profissao, salario) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

Mano essa exception é referente ao número de colunas e a quantidade de “?”(interrogações) esse erro é quando as quantidades não estão batendo, repare que depois de empresa você não colocou a virgula fazendo com que você tenha 15 colunas e 16 “?”(interrogações).

Entendeu ?
Abração e até mais

ken420

BINGOOO!!! era isso mesmo meuci e fanama muito obrigado uma simples virgula que pode mudar toda a historia heheheh vlw!!
me falem uma coisa nessa minha tela de cadastro eu tenhu uma combobox la que tem 4 itens(esses 4 itens nao esta relacionado com o banco de dados, eu apenas adicionei em model 4 items) vejam como adicionei ele

cliente.setEstadoC(jcb_EstadoC.getItemListeners().toString().trim());

e quando tento grava esse item no banco aparece a seguinte mensagem

run:
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'estadoC' at row 1
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3374)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3308)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1837)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1961)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2543)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1737)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2022)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1940)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1925)
        at br.com.Papelaria.Cliente.ClienteControl.cadastrarCliente(ClienteControl.java:72)

OBS: muito obrigado mesmo pela forca pessoal vlw

meucci

Cara esse exception é referente a tipos incompativeis,
pois você deve estar tentando cadastrar um valor que não é o mesmo tipo de valor que a coluna do banco aceita…
Se atente a isso.

Mas vou te falar como que eu faço:

para add opções no combo

cbox.addItem(valor);

e quando for resgatar o valor você

cbox.getItemAt(cbox.getSelectedIndex());

e ai faz o parce para o Tipo de você precisa, tudo depende o que você adicionou pois esse metodo retorna um Object.

Espero ter ajudado
até mais

ken420

e é trivial eu adicionar pequenos combobox com apenas 3 itens ou tenho que tudo que conter em minha tela de cadastro estar relacionado com o banco de dados!

ken420

meu model do combobox esta assim Model: C, S, V, D e no minha coluna no banco esta aceitando char (1) adiciono manualmente la e ele aceita normal o problema eh q n vai do netbeans para o mysql!

Criado 26 de fevereiro de 2009
Ultima resposta 26 de fev. de 2009
Respostas 6
Participantes 3