Erro conecção com BD

8 respostas
P
Estou começando a estudar java com BD e estou encontrando o seguinte problema, criei a classe ConectaBanco:
package BD;

import java.sql.*;
import javax.swing.JOptionPane;

public class ConectaBanco{
    public void conecta() throws SQLException{
        //     public String nome;
        Connection connection = null;
        Statement stm = connection.createStatement();
        String res;
        try{
            // Carregando o JDBC Driver
            String driverName = "com.mysql.jdbc.Driver"; // MySQL MM JDBC driver
            Class.forName(driverName);
            // Criando a conexão com o Banco de Dados
            String serverName = "localhost";
            String mydatabase = "pcjardim";
            String url = "jdbc:mysql://" + serverName + "/" + mydatabase; // a JDBC url
            String username = "root";
            String password = "";
            connection = DriverManager.getConnection(url, username, password);
            JOptionPane.showMessageDialog(null,"Legal conectou");            
        } 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");
        }
    }
    //connection.close();
}
e a classe Contas:
package contas;

import BD.ConectaBanco;

/** pcjardim  */
public class Contas {    
    public static void main(String[] args) {
        ConectaBanco con = new ConectaBanco();
        con.conecta();
    }
}
quando vou rodar ta dando erro, ta dizendo que o código fonte é imcompatível: Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - unreported exception java.sql.SQLException; must be caught or declared to be thrown at contas.Contas.main(Contas.java:9) Por favor, alguém pode me ajudar??

8 Respostas

Luciano_Lopes

Da uma olhada nesse artigo e vê se resolve teu problema:

http://www.guj.com.br/article.show.logic?id=7

xjunior

Bom,

Olha um exemplo interessante que postei com uma estrutura de conexão:

http://www.guj.com.br/posts/list/148642.java#804938

creio que vai te ajudar muito

xjunior

Evite de usar Statament e use PreparedStatament

nathanpsouza

cara, na declaração do seu método conecta você diz que ele pode lançar uma exception do tipo SQLException, mas no metodo main, vc nao joga a exception pra frente ou trata ela, por isso ocorre o erro.

Experimente lança-la pra frente usando no método main:

ou circular a chamada ao método conecta com try/catch:

try { ConectaBanco con = new ConectaBanco(); con.conecta(); } catch( SQLException ex) { //tratar a exception caso ela seja lançada }

espero ter ajudado :}

P

xjunior valeu pela ajuda… vou estudar, achei mais complexo ou completo, mas vou estudar o seu código.

Agora, nathanpsouza quando eu faço isso: public static void main(String[] args) throws SQLException {, aliás ja tinha feito antes, da o seguinte erro:

Exception in thread “main” java.lang.NullPointerException

at BD.ConectaBanco.conecta(ConectaBanco.java:10)

at contas.Contas.main(Contas.java:10)

Java Result: 1
nathanpsouza

Sim, é porque voce esta tentando chamar um método em um objeto nulo, repare que:

Connection connection = null; Statement stm = connection.createStatement();

connection eh nulo, logo ela nao tem o metodo createStatement por isso eh lançada a NullPointerException…

para chamar qualquer método de connection primeiro vc tem que uma instancia da classe, experimente assim criar o statement apos a chamada de

connection = DriverManager.getConnection(url, username, password);

espero ter ajudado :}

Luciano_Lopes

Qual a diferença?Sempre usei o Statment

Luciano_Lopes

Qual a diferença?Sempre usei o Statment
Deixa pra lá,ja tirei a duvida,vou postar aqui o link do tópico caso o pcjardim também tenha duvida:

http://www.guj.com.br/posts/list/184930.java

Criado 10 de fevereiro de 2010
Ultima resposta 11 de fev. de 2010
Respostas 8
Participantes 4