Try/catch

Companheiros,

Estou com um problema em relação ao uso do try e do class.
Desenvolvi um aplicativo aqui no netbeans (modo visual) e coloquei diversos objetos da palheta, compondo um formulario.
Adicionei um botão para salvar e como ação adicionei um mouseClicked, no qual capturo todos os dados do formulario e insiro num banco de dados.
O problema é que quando coloco o try com as variaveis para conexão, inserção no banco, etc me aparece diversos erros la no final do código na parte de declaração de variáveis e quando executo o projeto (F6) acusa “Classe Principal não Encontrada”.

Alguém sabe o que pode ter ocorrido?

Um grande abraço

[quote=tandrade]Companheiros,

Estou com um problema em relação ao uso do try e do class.
Desenvolvi um aplicativo aqui no netbeans (modo visual) e coloquei diversos objetos da palheta, compondo um formulario.
Adicionei um botão para salvar e como ação adicionei um mouseClicked, no qual capturo todos os dados do formulario e insiro num banco de dados.
O problema é que quando coloco o try com as variaveis para conexão, inserção no banco, etc me aparece diversos erros la no final do código na parte de declaração de variáveis e quando executo o projeto (F6) acusa “Classe Principal não Encontrada”.

Alguém sabe o que pode ter ocorrido?
[/quote]

é try/catch não try/class tlv seja isso.

Escrevi errado no tópico. Estou falando do try/catch mesmo.

Segue o código:

        try {
            String dsn     = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\end\dados.mdb";
            String usuario = "";
            String senha   = "";
            String sql     = "";
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
            Connection con = DriverManager.getConnection(dsn,usuario,senha);
            Statement st = con.createStatement();
            st.executeUpdate("INSERT INTO Teste (Emissor, Outra_Origem, Tipo, Responsavel, Observacoes) VALUES ('"+emissor+"', '"+outra_origem+"', '"+tipo+"', '"+responsavel+"', '"+obs+"')");
            JOptionPane.showMessageDialog(null,"Registro Inserido Com Sucesso","Mensagem do Programa",JOptionPane.INFORMATION_MESSAGE);
            st.close();
            con.close();
            
catch(Exception event) {
                JOptionPane.showMessageDialog(null,"Conexão não estabelecida","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
                
            }
    }

esse codigo esta na class main??

pq olhei o codigo e pelo que vi nao tem nada de errado , o erro deve estar em outro lugar e estourando no try/catch

[]'s

eu te aconselho a usar a cláusula finally para fechar as conexões…pq se tiver alguma exceção antes das 2 chamadas a close() as conexões não serão fechadas .

vc usa as variáveis em outro lugar no código? pq vc as declarou dentro do bloco try então elas só existem no escopo do bloco try. outra coisa q percebi é q está faltando uma chave pra fechar o bloco try, antes do catch.

verdade !!! :shock:

esta faltando uma chave antes do catch , nao tinha percebido.

boa Pablo :slight_smile:

[]'s

tente assim:

try {   
            String dsn     = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\\end\\dados.mdb";   
            String usuario = "";   
            String senha   = "";   
            String sql     = "";   
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();   
            Connection con = DriverManager.getConnection(dsn,usuario,senha);   
            Statement st = con.createStatement();   
            st.executeUpdate("INSERT INTO Teste (Emissor, Outra_Origem, Tipo, Responsavel, Observacoes) VALUES ('"+emissor+"', '"+outra_origem+"', '"+tipo+"', '"+responsavel+"', '"+obs+"')");   
            JOptionPane.showMessageDialog(null,"Registro Inserido Com Sucesso","Mensagem do Programa",JOptionPane.INFORMATION_MESSAGE);   
            st.close();   
            con.close();   
               
        }catch(Exception event) {   
             JOptionPane.showMessageDialog(null,"Conexão não estabelecida","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);   
                   
        }   

A sintaxe está correta.

O código está na classe main. Ele funciona corretamente sem utilização do try/catch. Porém quando utilizo o try/catch ele diz não ter localizado a classe main.

Desconfio que esse erro esteja relacionado com os catches que utilizei em outra parte do código,

catch (PropertyVetoException ex)

esse catch que vc posto agora , esta na class main?

No momento que editei o código esqueci das chaves, mas aqui ele está ok :slight_smile:
O erro n foi esse (rs)

Sim, está na classe main

a classe Main não esta sendo achada provavelmente pq esta com algum erro de compilação.
se vc não postar o erro fica dificil… se vc colocar todo o codigo que esta com problema tmb vai ajudar.

[]´s

vc ja testo tirar ele?? ou trocar por exception

acho que nao deve ser este o motivo do erro , mas nunca se sabe né

se continuar dando erro , posta ae a msg de erro que ele da.

[]'s

é isso, não compila pq não encontra a classe principal!!! ou seja, não aparece nenhum erro no console!!

segue o main

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new main().setVisible(true);
            }
        }
    }

filho, vamos por partes.
1 - compilar e execuatar são coisas diferentes.
2 - vc so pode executar uma classe depois de compila-la, ou seja gerar o .class.
3 - se vc mandar executar uma classe que esta com erro de compilação, vai dar erro, pq não foi gerado o .class dela.

perguntas:
onde estão declaradas as variaveis emissor, outra_origem, tipo, responsavel, obs? parece que não etsão visiveis dentro do seu bloco try/catch.
vc esta executando:

new main().setVisible(true); 

sua classe realmente é main com minuscula ou Main??? Java é Key sensitive.

se nada disso te ajudar, por favor coloque TODO o codigo da classe.

[]´s

E se nao me engano no Runnable esta faltando fechar um )

java.awt.EventQueue.invokeLater(new Runnable() {

[]'s

Consegui! :slight_smile:

Era um bug do netbeans com o uso do catch! a sintaxe do código estava toda correta mesmo rs

Obrigado!