Agora o problema é no INSERT INTO, não cadastra no banco de dados. [ Resolvido ]

5 respostas
Pilantra

Olá Pessoal,

Ontem eu estava com problema no SELECT e depois de muito tempo agente percebeu que era só um erro de termo usado hehe. Mas tudo bem, agora eu estou tentando fazer cadastros e não vai de jeito nenhum, ele sempre ta caindo no catch, vejam o código que eu utilizei:

// Variaveis Locais
        PreparedStatement stm;
        Connection connection;
        String serverName = "localhost:3306";
        String mydatabase = "system_web";
        String url = "jdbc:mysql://" + serverName + "/" + mydatabase; // a JDBC url
        String username = "root";
        String password = "";
        String senha = new String(txtSenha.getPassword());
        
        // Valida se está vazio os campos para iniciar o processo de login
            try {
                // Carregando o JDBC Driver
                String driverName = "org.gjt.mm.mysql.Driver"; // MySQL MM JDBC driver
                Class.forName(driverName);
                
                // Criando a conexão com o Banco de Dados
                connection = DriverManager.getConnection(url, username, password);
                
                // Executa a query
                stm = connection.prepareStatement("INSERT INTO users VALUES('',?,?,?)");
                stm.setString(1,txtNome.getText());
                stm.setString(2,txtLogin.getText());
                stm.setString(3,senha);
                stm.execute();
                JOptionPane.showMessageDialog(null, "Cadastro efetuado com sucesso!","Cadastro de Usuários", JOptionPane.INFORMATION_MESSAGE);
            } catch (ClassNotFoundException e) {
                    //Driver não encontrado
                    System.out.println("O driver expecificado não foi encontrado.");
            } catch (SQLException e) {
                    //Não está conseguindo se conectar ao banco
                    System.out.println("Não foi possível conectar ao Banco de Dados");
            }

Ele cai no catch que não consegue se conectar ao banco!! Eu já mudei umas par de vez esse esquema de cadastrar, pelo que eu pesquisei tem várias maneiras de fazer um cadastro no banco e a ultima que eu vi e desisti foi essa do PreparedStatement. O MySQL está startado e está tudo normal com o banco, até porque eu consigo me logar no sistema. Alguém pode me ajudar?

Obrigado.

5 Respostas

Pedrosa

Como você disse que consegue conectar no sistema, essa mensagem de erro está incorreta, coloque um e.printStackTrace(); e veja o erro que está causando, uma outra dica imprima essa query copie e cole na interface do bd e veja se funciona.

Isole a conexão em uma classe especifica para não replicar código em várias partes do sistema.

Pilantra

Olá,

Então a query está funcional!! Veja o erro abaixo:

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value adjusted for column 'id' at row 1 at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2939) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715) at com.mysql.jdbc.Connection.execSQL(Connection.java:3243) at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1343) at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1260)

O que será esse problema?

P

O campo que vc esta incluindo ‘’, aceita este tipo de dado ?

Alias, prepareStatement permiti esta mesclagem de dados, tipo usar ? e valores fixos no sql ?
Não tenho certeza… mas faça um teste passando este valor como os outros, atraves do ? e stm.setString

P

o campo id é incremental ? Se for é so omitir ele no comando sql

Pilantra

Ah era isso mesmo!!! É que eu programo em PHP hehe, isso ae funciona no PHP, eu coloquei um NULL ali e funcionou!!

Nossa esse printStackTrace() era tudo que eu queria hehe.

Valeu galera, mais uma vez me ajudando!!

Abraços.

Criado 9 de março de 2007
Ultima resposta 9 de mar. de 2007
Respostas 5
Participantes 3