Formulario de cadastro não abre!

16 respostas
H

Seguinte pessoal, estou criando um programa de estoque atraves do NetBeans, mas quando a linha de codigo "con_cidade.conecta();"que server para conectar ao banco de dados
estiver no codigo do meu formulario de cad_cidade (cadastro cidade) ao executar o programa e clicar no botão “cidades” (abre o formulario cad_cidade), ele não é aberto, só quando retiro a linha “con_cidade.conecta”, que executo o programa e consegue abrir o formulario cad_cidade clicando no botão “cidade”, segue o codigo do formulario cad_cidade:

package cadastros;
import utilitarios.conexao;
public class cad_cidade extends javax.swing.JFrame {

    conexao con_cidade;
    
    public cad_cidade() {
        initComponents();
        con_cidade = new conexao();
        con_cidade.conecta();
    }

segue tambem o codigo do arquivo que faz conexão com o banco de dados 

    public class conexao
{ //"final" significa que a variavel driver sera estatica, portanto ñ podera ser alterada
    final private String driver = "sun.jdbc.odbc.Jdbc0dbcDriver"; 
    
    final private String url = "jdbc:odbc:estoque";
    final private String usuario = "";
    final private String senha = "";
    private Connection conexao;
    public Statement statement;
    public ResultSet resultset;
    
    public boolean conecta()
    {
        boolean resul = true;
        try
        {
            Class.forName(driver);
            conexao = DriverManager.getConnection(url, usuario, senha);
            JOptionPane.showMessageDialog(null, "conectou");
        }
        catch(ClassNotFoundException Driver)
        {
            JOptionPane.showInternalMessageDialog(null,"Driver não localizado"+Driver);
            resul = false;
        }
        catch(SQLException Fonte)
        {
            JOptionPane.showMessageDialog(null, "Deu erro na conexão "+
                    "com a fonte de dados: "+Fonte);
            resul = false;
        }
        return resul;
    } //f_conecta
    
    public void desconecta()
    {
        boolean result = true;
        try 
        {
            conexao.close();
            JOptionPane.showMessageDialog(null, "banco fechado");
        }
        catch(SQLException fecha)
        {
            JOptionPane.showMessageDialog(null, "Não foi possivel "+ 
                    "fechar o banco de dados: "+fecha);
            result = false;
        }
    }
    
    public void executeSQL(String sql)
    {
        try
        {
            statement = conexao.createStatement(); //Cria a conexão
            resultset = statement.executeQuery(sql); //Libera o caminho para acessar o banco de dados
        }
        catch(SQLException sqlex)
        {
            JOptionPane.showMessageDialog(null, "Não foi possivel "+
                    "executar o comando sql, "+sqlex+", o sql passado foi "+sql);
        }
    }
}

Uma outra duvida é qu eeu não sei se este é mesmo o driver “final private String driver = “sun.jdbc.odbc.Jdbc0dbcDriver”;”, pois estou seguindo video aulas, se puderem me dizer como consigo confirmar esta informação.

Desde já agradeço.

16 Respostas

S

Qual Banco de Dados você está utilizando?

Se for MySql o driver é esse:

com.mysql.jdbc.Driver

Mas dependendo da versão do JDBC que você estiver utilizando, nem é necessário declarar o drive.

Esse drive MySql não utiliza ODBC. O drive que você colocou no código é para se comunicar com Banco de Dados Access, creio.

Consulte a apostila FJ21 da Caelum Página 6.

H

Então amigo, o banco de dados que estou utilizando é o access, na verdade estou seguindo o curso do Neri para criação de um programa de estoque, mas este foi o primeiro problema que me deparei e não consigo resolver.

S

Então amigo, para usar o access vc precisa fazer uma configuração na parte de ODBC. Criar uma fonte de dados, e tudo mais no Painel de Controle do Windows.

Com MySql é bem mais tranquilo pq não utiliza ODBC. E você encontra muito mais material na net com esse Banco, do que com o Access. Recomendo o MySql para que você também entenda melhor como funciona a linguagem SQL.

H

Eu cheguei a fazer isso no painel de controle - Ferramentas Adiministrativas - Fontes de Dados.

Fiz todo o processo como é explicado nas videos aulas do Neri, mas mesmo assim ao executar o programa e clicar no botão “cidades” ele não abre, so quando retiro a linha con_conexao.conecta();.

Se quiser posso ate te enviar o programa para que de uma olhada.

Obrigado pela atenção que esta prestando.

S

Pode mandar então amigo, fica mais fácil. Eu tento simular ele. Aí vemos qual é o problema.

H

Qual é seu email para que eu possa te enviar o programa?

S

Manda como mensagem privada pra mim .java

H

Mas não tem nenhum botão para anexar o arquivo

S

te mandei uma mensagem privada com o meu email. Blza?

H

Opa, vlw, ja respondi a menssagem privada e seu email.

H

Amigo, esta analizando o codigo?

S

Opa. Agora quem está com problema sou eu. rsrs.

Então, estou com seu código, mas eu não consigo abrir as classes. Não achei os arquivos .java do seu projeto. E eu uso o Eclipse, mas quanto a isso eu acho que não tem muito a ver.

Quando eu tento abrir uma das classes pelo Eclipse dá um erro e não exibe o código, mas eu tenho quase certeza que o que eu tenho que abrir são os arquivos .java e não os .class. Eu não achei os .java no seu projeto.

H

Acho melhor abrir o programa com o netbeans, o arquivo .java esta dentro da pasta estoque1.3/src/telaprincipal.java

S

E aí, tudo bem?

Cara, eu abri o seu arquivo, mas não estou conseguindo executar ele. Eu abri no Eclipse, mas não rodou por algum motivo.

Eu até trouxe o net para o trabalho pra dar mais uma olhada.

Eu tava vendo algumas coisas, tipo aquelas declarações é o próprio NetBeans que faz? A página está muito carregada com código.

Existem várias declarações desse tipo:

botao_bairro = new javax.swing.JButton();

sendo que o mais viável seria importar a classe JButton no começo, assim:

import javax.swing.JButton;

E depois declarar a variável:

JButton botao_bairro;

Mas é só uma dica. Quanto ao restante, vou tentar executar hoje. Se tiver algum detalhe ou informação que possa me ajudar, agradeço.

thiago_spdvr

Sinceramente vc não deveria fazer isso, pois daqui a algum tempo vc vai ter que desaprender o que aprendeu errado e re-aprender os conceitos de OO.
Experiência própria.

H

Opa, agradeço a ajuda.

Então, foi o proprio java que gerou o codigo.
Uma coisa que eu acho que pode te ajudar é o seguinte, quando eu executo o codigo o erro que me aparece é este(aparece tudo em vermelho):

run:

Exception in thread AWT-EventQueue-0 java.lang.RuntimeException: JOptionPane: parentComponent does not have a valid parent

at javax.swing.JOptionPane.createInternalFrame(JOptionPane.java:1513)

at javax.swing.JOptionPane.showInternalOptionDialog(JOptionPane.java:1288)

at javax.swing.JOptionPane.showInternalMessageDialog(JOptionPane.java:1102)

at javax.swing.JOptionPane.showInternalMessageDialog(JOptionPane.java:1076)

at javax.swing.JOptionPane.showInternalMessageDialog(JOptionPane.java:1050)

at utilitarios.conexao.conecta(conexao.java:27)

at cadastros.cad_cidade.(cad_cidade.java:19)

at TelaPrincipal.botao_cidades1ActionPerformed(TelaPrincipal.java:267)

at TelaPrincipal.access$100(TelaPrincipal.java:18)

at TelaPrincipal$2.actionPerformed(TelaPrincipal.java:92)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)

at java.awt.EventQueue.access$000(EventQueue.java:101)

at java.awt.EventQueue$3.run(EventQueue.java:666)

at java.awt.EventQueue$3.run(EventQueue.java:664)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)

at java.awt.EventQueue$4.run(EventQueue.java:680)

at java.awt.EventQueue$4.run(EventQueue.java:678)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

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

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

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

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

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

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

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

CONSTRUÍDO COM SUCESSO (tempo total: 7 segundos)

E quando eu executo o programa sem a linha con_cidade.conecta();

Criado 22 de fevereiro de 2012
Ultima resposta 29 de fev. de 2012
Respostas 16
Participantes 3