Re: Conexão com banco de DADOS

11 respostas
pauloperes

Vsouza,

Veja, vc chama no método getConnection(), vc naum está retornando nada, faça assim:

public Connection getConnection(){}

E depois na sua classe que pega uma conexão vc naum criou ela, tente fazer assim:

Connection = new ConectaDB().getConnection();

Obs.: Procure colocar os seus códigos dentros das tags code.

Valeu,

Paulo

11 Respostas

pauloperes

Vsouza,

Mais um detalhe, no seu método consultaAnalisebd(), vc deveria estar retornando um ResultSet e não uma string na minha opinião,

Atenciosamente,

Paulo

Luiz-SP

tenta assim

String url = "jdbc:odbc:nomedaconeçãoodbc";
 Connection con;
 con = DriverManager.getConnection(url,"nomedousuario","senha");

Deixa eu te fazer uma pergunta, vc manja de sql?

pauloperes

Souza,

Como vc está estendo a sua classe, tenta assim na segunda:

Connection conne = super.getConnection();

Ops, tava esquecendo, baixe esta apostila, tem um ótimo conteudo sobre banco de dados em um dos capitulos.

http://www.linux.ime.usp.br/~lopes/caelum/fj21.pdf

Atenciosamente

Paulo

pauloperes

Souza,

Faz mais um teste ai, joga o Class.forName e a instanciação de suca conexão dentro do try.

Aguardo para ver se funcionou.

Atenciosamente,

Paulo

Luiz-SP

Então, acho que vc tem que devolver um objeto Connection no getConnection, então na ConsultaAnalise vc cria uma instância do ConectaBb e usa o getConncetion para um connection que local de ConsultaAnalise.

pauloperes

Souza,

coloca assim:

catch (Exception e){
           e.printStackTrace();
       }

Precisando, é só falar, e sem querer ser chato, da uma lida naquela apostila que te mandei, vai ajudar pra kraramba.

Atenciosamente,

Paulo

V

Meus caros, estou tentando conectar ao banco de dados e fazer uma query de uma forma, mas não está dando certo e não consigo entender o porque:

**** CLASSE CONECTABD:
package labsem;

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import java.sql.ResultSet;
public class Conectabd {

public Connection conn = null;

public Statement stm = null;
public void getConnection() {
    try {
        Class.forName ("com.mysql.jdbc.Driver");
  }
  catch(java.lang.ClassNotFoundException e) {
     System.err.print("ClassNotFoundException:");
     System.err.println(e.getMessage());
  };
    try {
        Connection conn = DriverManager.getConnection("jdbc:mysql://XXX/BD?user=admmysql&password=XXX");
                   
    } catch (SQLException ex) {....
         }
}

}

*****CLASSE QUE FAZ A QUERY CHAMANDO A CONEXAO:
package labsem;

import javax.swing.JOptionPane;

import java.sql.SQLException;

import java.sql.Statement;

import java.sql.ResultSet;

public class Consultaanalise extends Conectabd{

public String consultaAnalisebd(String id_reg) {
    getConnection();  //METODO DA CLASSE CONECTABD
   
    if (conn==null){    //SEMPRE CAI AQUI!!!!!!!!!!!!!
            JOptionPane.showMessageDialog(null,"Não foi possível conectar ao banco de dados, fale com o administrador.");
        }else {

         try {
                stm = conn.createStatement(); //usa a variavel da classe bd
                ResultSet rs = stm.executeQuery("SELECT ....");
         } catch (SQLException ex) {....
                     }
         }
        return RESPOSTA;   
           }
}

MAS SEMPRE CAI NO PRIMEIRO IF, QUE TESTA SE O VALOR ESTA NULO!!
OU SEJA A VARIVEL CONN ESTÁ VINDO NULA

SE eu por tudo em uma unica classe funciona normalmente.

O que fazer?
vsouza

V

Olá Paulo, desde já muito obrigado pela ajuda, mas veja, desta vez eu colquei da forma que está falando mas continua com o mesmo problema:

classe conectadb
 public Connection getConnection() {
     ......
     return conn;
 }

  classe que usa conexao
public class Consultaanalise extends Conectabd{
    public Connection conne = null;
    public String consultaAnalisebd(String id_reg) {
     .....
        conne = new Conectabd().getConnection();
       
        if (conne==null){
                JOptionPane.showMessageDialog(null,"VARIAVEL CONNE NULA!!.");
            }else {
          try {
                    stm = conne.createStatement();
                    ResultSet rs = stm.executeQuery("SELECT * FROM sementes_analise WHERE id_semente ='"+id_reg+"'");
                ....
            }
        }
}

MAS AINDA ASSIM ELE DIZ QUE A VARIAVEL ESTA NULA!!! MAS TENHO CERTEZA QUE SE COLOCAR TUDO EM UMA SÓ CLASSE NÃO APRESENTA ERRO!!!

vsouza

V

Luiz o problema não é com Driver ou com a conexao em Sí, pois a conexao esta normal, ja testei colocando tudo em uma unica classe, porém se separar as tarefas quando retorno a conexao a classe que recebe diz q está nula.
Quanto ao sql, um pouco, não sou nenhum craque…

victor

V

é nao funcionou… continua recebendo nula…
tentei até instanciando ao invés de extender…

Vsouza

[quote=pauloperes]Souza,

Como vc está estendo a sua classe, tenta assim na segunda:

Connection conne = super.getConnection();
V

Paulo vc vai querer me matar… mas me diz como tem q ser o catch nesse caso pfavor… que sou iniciante ainda!!!
tentei:

try {
            
        conne = new Conectabd().getConnection();
        } catch( ??????   aqui  ?????) {
                System.out.println("SQLException: " + ex.getMessage());
                System.out.println("SQLState: " + ex.getSQLState());
                System.out.println("VendorError: " + ex.getErrorCode());
        }

dá erro no catch…

Criado 29 de julho de 2005
Ultima resposta 29 de jul. de 2005
Respostas 11
Participantes 3