Java.sql.DataTruncation: Data truncation

11 respostas
A

pq toda vez q vo fazer um insert da este erro???
Só lembrando eu to usando SQL Server, o código abaixo é o botão.

private void btnCadastrarActionPerformed(java.awt.event.ActionEvent evt) {                                             
        ConectarBanco conecta = new ConectarBanco();
        conecta.abreConexao();

        //Inserindo dados na tabela
        try{
            String sql = "insert cliente (nome_cliente,cnpj_cliente,ie_cliente) values" +
                " ('"+txtRazao.getText()+"','"+txtCnpj.getText()+"','"+txtIe.getText()+"')";
            conecta.stmt.executeUpdate(sql);
        }catch (SQLException e){
            e.printStackTrace();
        }

        //Fechando a Conexao
        try{
            conecta.con.close();
            conecta.stmt.close();
        }catch (SQLException e){
            e.printStackTrace();
        }
    }

11 Respostas

W

Cara, coloca insert into antes

P

insert into …

A

no sql server isto nao faz diferença!
bom eu coloquei e não foi.
olha o erro completo

<blockquote>java.sql.DataTruncation: Data truncation

at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:382)

at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2816)

at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2254)

at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:631)

at net.sourceforge.jtds.jdbc.JtdsStatement.processResults(JtdsStatement.java:584)

at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQL(JtdsStatement.java:546)

at net.sourceforge.jtds.jdbc.JtdsStatement.executeImpl(JtdsStatement.java:723)

at net.sourceforge.jtds.jdbc.JtdsStatement.executeUpdate(JtdsStatement.java:1163)

at net.sourceforge.jtds.jdbc.JtdsStatement.executeUpdate(JtdsStatement.java:1116)

at Clientes.CadastroClientes.btnCadastrarActionPerformed(CadastroClientes.java:241)

at Clientes.CadastroClientes.access$000(CadastroClientes.java:12)

at Clientes.CadastroClientes$1.actionPerformed(CadastroClientes.java:177)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)

at java.awt.Component.processMouseEvent(Component.java:6038)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)

at java.awt.Component.processEvent(Component.java:5803)

at java.awt.Container.processEvent(Container.java:2058)

at java.awt.Component.dispatchEventImpl(Component.java:4410)

at java.awt.Container.dispatchEventImpl(Container.java:2116)

at java.awt.Component.dispatchEvent(Component.java:4240)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)

at java.awt.Container.dispatchEventImpl(Container.java:2102)

at java.awt.Window.dispatchEventImpl(Window.java:2429)

at java.awt.Component.dispatchEvent(Component.java:4240)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

</blockquote>
A

gente achei o erro!!!
é que no cnpj eu to usando campo formatado (JFormattedTextField)
como que eu pego o valor neste campo??? nao seria como o normal ???

txtCnpj.getText() ???

W

Cara, esse tipo de erro acontece quando vc tenta inserir algum tipo de valor diferente do tipo definido no banco. Verifica se vc não formatou para ter pontos e traços no cnpj e no tipo da coluna no banco não aceita pontos ou traços.

A

nao eh
eu coloquei um texfield e ele inseriu

W

Mas como vc formatou??

A

olha a configuracao


W

Cara, como te falei, quando ele formata o cnpj ele fica com o formato xxx.xxx.xxx/xxxx (ou algo assim), provavelmente na sua tabela o campo esta com um formato diferente tipo numerico, por exemplo, ou o tamanho maximo do campo não seja o suficiente. Verifica a sua tabela no BD ou manda ai como está o seu campo na tabela(tipo, tamanho).

A

entendi
no banco tava char(11)
alterei pra char(18 ) e ele armazenou mas no banco ficou assim 99.999.999/9999-99

valeu 8)

L

Por que que quando eu estou cadastrando a conta funciona, e quando vou alterar uma conta (que é tudo igual só muda o sql) resulta esse erro?

java.sql.DataTruncation: Data truncation
at org.firebirdsql.jdbc.field.FBWorkaroundStringField.setString(FBWorkaroundStringField.java:97)
at org.firebirdsql.jdbc.AbstractPreparedStatement.setString(AbstractPreparedStatement.java:402)
at br.com.sisfinanceiro.planodecontas.PlanodecontasControle.alterarContas(PlanodecontasControle.java:112)

-----------------> Para eu cadastrar uma conta ... String cadastraContas = "insert into tb_planodecontas (pk_cod_conta, descricao, natureza, tipo, dispo_imed, situacao) " + "values (?,?,?,?,?,?)"; ...
public void cadastrarContas(PlanodecontasValendo planodecontas){
        try{
            pstm = firebird.conectar().prepareStatement(cadastraContas);
            pstm.setString(1, planodecontas.getCodigo());
            pstm.setString(2, planodecontas.getDescricao());
            pstm.setString(3, planodecontas.getNatureza());
            pstm.setString(4, planodecontas.getTipo());
            pstm.setString(5, planodecontas.getDisponivel());
            pstm.setString(6, planodecontas.getSituacao());
            pstm.executeUpdate();
            firebird.desconectar();
            
        }catch(Exception e){
            e.printStackTrace();
        }        
    }
... ...
private void cadastrarContas(){
        if (tfCodigoConta.getText().trim().equals("")) {
            JOptionPane.showMessageDialog(this, "Informe o Código da Conta.");
            tfCodigoConta.requestFocus();
        } else if (tfDescricaoConta.getText().trim().equals("")) {
            JOptionPane.showMessageDialog(this, "Informe a Descrição da Conta.");
            tfDescricaoConta.requestFocus();
        } else if (cbNatureza.getSelectedItem() == null) {
            JOptionPane.showMessageDialog(this, "Informe a Natureza da Conta.");
            cbNatureza.requestFocus();
        } else if (cbTipo.getSelectedItem() == null) {
            JOptionPane.showMessageDialog(this, "Informe o Tipo da Conta.");
            cbTipo.requestFocus();
        } else if (cbDisponibilidade.getSelectedItem() == null) {
            JOptionPane.showMessageDialog(this, "Informe se a Conta representa um recurso Disponível Imediato.");
            cbDisponibilidade.requestFocus();
        } else {  
        PlanodecontasControle pc = new PlanodecontasControle();
        PlanodecontasValendo planodecontas = new PlanodecontasValendo();
        planodecontas.setCodigo(tfCodigoConta.getText());
        planodecontas.setDescricao(tfDescricaoConta.getText());
        planodecontas.setNatureza(cbNatureza.getSelectedItem().toString());
        planodecontas.setTipo(cbTipo.getSelectedItem().toString());
        planodecontas.setDisponivel(cbDisponibilidade.getSelectedItem().toString());
        planodecontas.setSituacao(cbSituacao.getSelectedItem().toString());
        pc.cadastrarContas(planodecontas);
        JOptionPane.showMessageDialog(this, "Nova Conta incluída com sucesso.");
        desabilitaCampos();
        }
    }
... -------------> Para eu alterar uma conta ... String alteraContas = "UPDATE TB_PLANODECONTAS SET PK_COD_CONTA = ?, DESCRICAO = ?, NATUREZA = ?, TIPO = ?, DISPO_IMED = ?," + "SITUACAO = ? WHERE PK_COD_CONTA = ?"; ...
public void alterarContas(PlanodecontasValendo conta){
        try{
            pstm = firebird.conectar().prepareStatement(alteraContas);
            pstm.setString(1, conta.getCodigo());
            pstm.setString(2, conta.getDescricao());
            pstm.setString(3, conta.getNatureza());
            pstm.setString(4, conta.getTipo());
            pstm.setString(5, conta.getDisponivel());
            pstm.setString(6, conta.getSituacao());
            pstm.setString(7, conta.getCodigo());
            pstm.executeUpdate();
            firebird.desconectar();
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
...
private void alterarConta() {
        PlanodecontasControle pl = new PlanodecontasControle();
        PlanodecontasValendo planodecontas = new PlanodecontasValendo();
        planodecontas.setCodigo(tfCodigoConta.getText());
        planodecontas.setDescricao(tfDescricaoConta.getText());
        planodecontas.setNatureza(cbNatureza.getSelectedItem().toString());
        planodecontas.setTipo(cbTipo.getSelectedItem().toString());
        planodecontas.setDisponivel(cbSituacao.getSelectedItem().toString());
        planodecontas.setSituacao(cbSituacao.getSelectedItem().toString());
        planodecontas.setSequencia(Integer.parseInt(tfSeq.getText().trim()));
        pl.alterarContas(planodecontas);
        JOptionPane.showMessageDialog(this, "Conta alterada com sucesso.");
        desabilitaCampos();
    }
Criado 9 de setembro de 2009
Ultima resposta 27 de mar. de 2012
Respostas 11
Participantes 4