Acessar objeto instanciado de outra classe

Estou iniciando em Java, e tava querendo fazer o seguite.

Tenho:
Uma janela principal do programa.
Uma classe que acessa o banco de dados (firebird).
E um formulario. => jInteralFrame

O que eu queria é instanciar a classe conexao_firebird dentro dessa janela principal, e poder acessa-la desse formulário.

Queria fazer, para poder conectar com o banco de dados apenas uma vez, e não sempre que eu precisar.

Tem como?

Ricardo.

Poste parte do seu codigo ai, que a gente te ajuda.
ok?

Valeu…

import seupacote.suaclasse_de_banco;

class seuframe … {
private suaclasse_de_banco MINHA_INSTANCIA = new suaclasse_de_banco();
seuframeCONSTRUCTOR() {
MINHA_INSTANCIA.conecte_bd;
}
}

sacou ± ?

abs

Bah… manda o encriptador que tu fez isso ai…
hehehehe…

nao entendi nada.

Não foi eu que fez a pergunta… eu dei uma resposta …
:hunf:

[quote=peerless]Não foi eu que fez a pergunta… eu dei uma resposta …
:hunf:
[/quote]

Sim, e sua resposta funcionou! Eu acho…rs…
Foi só adicionar o pacote no import

Está dando outro erro aqui, mas acho que não tem há ver com essa parte, vou testar aqui e respondo se funcionou ou não.

Por favor, sigam a dica do Mantu quando forem postar trechos de código. :wink:

Não dei conta ainda…rs…

O que eu pretendo é instanciar essa classe apenas uma vez, quando inicio o programa, e poder utilizar seus métodos nas diversas classes que o programa terá.

Essa é minha classe conexao_firebird:

package soc.sta.eletricas;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import java.util.ArrayList;
import java.util.List;


public class conexao_firebird {

    public Connection con = null;
    public Statement  stm = null;

    public conexao_firebird() {

        try {

            Class.forName("org.firebirdsql.jdbc.FBDriver");
            con = DriverManager.getConnection(
                "jdbc:firebirdsql:10.0.37.91/3050:D:/dados/telecom/dbtelecom.fdb", "SYSDBA", "masterkey");

            stm = con.createStatement();

        } catch (ClassNotFoundException e) {

            System.out.println("excessao ClassNotFound...");
            e.printStackTrace();

        } catch (SQLException e) {

            System.out.println("SQL Exception... Erro dos Bravos");
            e.printStackTrace();

        }

        return;
    }

    public List pegaRegional() throws SQLException {

        List     lista        = new ArrayList();
        String   strSelect    = "SELECT * FROM GB_REGIONAL";
        int      i            = 0;

        ResultSet rs = stm.executeQuery( strSelect );

        while (rs.next()) {
            lista.add(i, rs.getString("NME_REGIONAL") );
            i++;
        }

        return lista;

    }


}

Quero instanciar ela na classe jEletricas, que é minha classe principal:

package soc.sta.eletricas;

import javax.swing.JFrame;

public class jEletricas extends javax.swing.JFrame{
    
    conexao_firebird conexao = new conexao_firebird();    
    
    public jEletricas() {
        initComponents();
    }

E quero ter acesso a essa conexão da classe imp_trasmissao:

package soc.sta.eletricas;

import java.io.File;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import soc.sta.eletricas.jEletricas;

public class imp_transmissao extends javax.swing.JPanel {

    //conexao_firebird conexao = new conexao_firebird();
    JFileChooser fc = new JFileChooser();

    String           strCaminho;
    
    public imp_transmissao() {
        initComponents();
        
        //------------------------------------------------------------------------------------------
        // Carrega lista de Regionais na ComboBox
        //------------------------------------------------------------------------------------------

        int  i = 0;
        List lstRegional = new ArrayList();
        
        cbo_regional.removeAllItems();

        try {
            lstRegional = conexao.pegaRegional();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        
        cbo_regional.addItem("");
        for (i = 0; i < lstRegional.size(); i++) {
            cbo_regional.addItem( lstRegional.get(i) );
        }        
        
    }

Num tô conseguindo ainda… :oops: :roll:

La na Classe jEletricas em vez de instanciar como:

conexao_firebird conexao = new conexao_firebird();

Instanciei como statico:

static conexao_firebird conexao = new conexao_firebird();

E parece ter funcionado… Isso mesmo?

O que você quer seria mais ou menos um Singleton. Porém, hoje em dia (se é que algum dia não foi) o uso de Singletons é considerada uma má prática, lembrando bastante as “variáveis globais” que se encontra por aí, além de outras desvantagens. Por exemplo, fazendo o que você quer com um Singleton, você não poderia mudar seu código para ter um pool de conexões com facilidade. Prefira um Factory Method.

Obrigado Douglas!

Vou dar uma pesquisada sobre Factory Method.