Erro ao Salvar Dados no BD

6 respostas
long
Ola pessoal nao sei se aqui sera o topico certo para posta a minha duvida.. qualquer coisa desculpa =P o meu problema eh o seguinte: to tentando salvar dados de um jdialog para o meu bd (uso o postgre) mas toda vez quando eu preencho os campos e aperto em salvar ele da o erro "valor é muito longo para tipo character(1)" fui verificar na tabela q eu no postgre se tinha alguma coluna com caracter=1 mas n tem
CREATE TABLE "Alunos"
(
  "NomeUser" character(40),
  "Matricula" integer,
  "DataNascimento" character(10),
  "RG" integer,
  "CPF" character(14),
  "Sexo" character(12),
  "CEP" character(9),
  "Logradouro" character(30),
  "Complemento" character(20),
  "Bairro" character(15),
  "Cidade" character(15),
  "UF" character(2)
)

Alguem teria ideia de qual esse caracter(1) se refere?

Vou postar aqui o meu codigo no botao salvar

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
            try{
                Class.forName( DRIVER );
                Connection con = DriverManager.getConnection( PATH, LOGIN, SENHA );
                Statement stmt = con.createStatement( );

                if(jRadioButtonMasculino.isSelected() == true){
                 Sexo = "Masculino";
                }
                else Sexo = "Feminino";

                
                String query = "INSERT INTO \"Alunos\" VALUES("
                        + "'"+jTextFieldNomeCliente.getText()+"'"
                        + "'"+jTextFieldMatricula.getText()+"'"
                        + "'"+jTextFieldNascimento.getText() +"'"
                        + "'"+jTextFieldRG.getText() +"'"
                        + "'"+jTextFieldCPF.getText() +"'"
                        + "'"+jTextFieldRG.getText() +"'"
                        + "'"+Sexo+"'"
                        + "'"+jTextFieldCEP.getText() +"'"
                        + "'"+jTextFieldLogradouro.getText() +"'"
                        + "'"+jTextFieldComplemento.getText() +"'"
                        + "'"+jTextFieldBairro.getText() +"'"
                        + "'"+jTextFieldCidade.getText() +"'"
                        + "'"+jComboBoxUF.getSelectedIndex() +"');";
            System.out.println( query );
            ResultSet rs = stmt.executeQuery( query );
            while ( rs.next() ) {
                nome.add(rs.getString(1));
                matricula.add(rs.getString(2));
                nascimento.add(rs.getString(3));
                rg.add(rs.getString(4));
                cpf.add(rs.getString(5));
                sexo.add(rs.getString(6));
                cep.add(rs.getString(7));
                logradouro.add(rs.getString(8));
                complemento.add(rs.getString(9));
                bairro.add(rs.getString(10));
                cidade.add(rs.getString(11));
                uf.add(rs.getString(12));
                String saida = "";
                for ( int i = 1; i <= 12; i++ ) {
                    saida = saida + rs.getString( i );
                    if ( i < 12 ) saida += "\t";
                }
                System.out.println( saida );
            }
            stmt.close( );
            con.close( );

            }
            catch(SQLException e ){
            javax.swing.JOptionPane.showMessageDialog( null, "ERROR: " + e.getMessage(),
                "SQLException", javax.swing.JOptionPane.WARNING_MESSAGE );
            }
            catch(ClassNotFoundException e){
            javax.swing.JOptionPane.showMessageDialog( null, "UNREPORTED ERROR: " + e.getMessage(),
                "Unreported Exception", javax.swing.JOptionPane.WARNING_MESSAGE );
            }
    }

6 Respostas

drsmachado

Quando você coloca

+ "'"+jTextFieldRG.getText() +"'"

e o valor está entre aspas simples, ele pode ser interpretado como String. Assim sendo, acredito que o erro seja aqui. Tente converter para int.

long

Voce diz algo meio q assim

+ "'"+Integer.parseInt(jTextFieldRG.getText()) +"'"

??
se for… nem pegou =\

drsmachado

Tire as aspas simples e faça a conversão

long

cara mas se eu tirar as aspas simples… o rg n iria como um campo isolado pro banco de dados…
n eh?

drsmachado

Então estuda PreparedStatement e faz do jeito certo.

long

Alguem tem outra ideia?

Criado 24 de maio de 2011
Ultima resposta 24 de mai. de 2011
Respostas 6
Participantes 2