Importar Conexao de outro pacote

4 respostas
jhonmarcos

Pessoal to com um problema... To criando uma aplicação com banco de dado, para ser mais específico um Software de Gerenciamento de Frigorífico...

Quando eu comecei a fazer o Código fiz uma conexão para cada ação que usuário iria fazer como: inserir registros, excluir e afins... Só que percebi que seria mais fácil se criasse um pacote com a conexão e depois importasse para os outros pacotes... Só que não to conseguindo fazer... Segue o código...

Pacote conexao...

package Conexao;
import java.sql.*;
import javax.swing.*;

public class Conexao {
    
    
    
    public static void main (String [] args){
        
        Connection banco;
        
            try{
                 Class.forName("com.mysql.jdbc.Driver");
                 banco = DriverManager.getConnection("jdbc:mysql://localhost:3306/frigorifico", "root", "");
                 
                 banco.close();
            
            }   catch (SQLException ex) {
                    JOptionPane.showMessageDialog(null, "Problemas na Conexão!!"+ ex.getMessage());
            }   catch (ClassNotFoundException ex) {
                    JOptionPane.showMessageDialog(null, "Problemas com o Driver!!" + ex.getMessage());
        }
        
    
    
    }
    
}

Um dos pacotes como exemplo... Pacote Frigorífico. Class Login. Lembrando que nessa parte to Trabalhando com Interface gráfica...

Obs. Essa Parte já ta modificada na tentativa de resolver o problema de importação... Principalmente ali na Linha 32 e 33.

package Frigorifico;

import java.sql.*;
import javax.swing.*;
import TelaInicial.TelaPrincipal;
import Conexao.Conexao;

public class Login extends javax.swing.JFrame {

    
    public Login() {
        initComponents();
    }


private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        
        
        try {
            

            String query = "SELECT * FROM cadastrologin WHERE Usuario LIKE ?";
            String query1 = "SELECT * FROM cadastrologin WHERE Senha LIKE ?";
            
            PreparedStatement comandoSQL, comandoSQL1;
            ResultSet res, res1;
            
            
            //Tentando de todas as formas que me lembro para importar... ^^
            
            
            comandoSQL = PreparedStatement(query);
            comandoSQL1 = banco.prepareStatement(query1);
            
            comandoSQL.setString(1, Usuario.getText());
            comandoSQL1.setString(1, Senha.getText());
            
            res = comandoSQL.executeQuery();
            res1 = comandoSQL1.executeQuery();
            
                if(res.next() && res1.next()){
                    JOptionPane.showMessageDialog(null, "Logado com sucesso!!!");
                    TelaPrincipal tela = new TelaPrincipal();
                    tela.show();
                }else{
                    JOptionPane.showMessageDialog(null, "Usuário ou Senha incorretos!!");
                }
            
            
            
            } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "" + ex.getMessage());
        } catch (ClassNotFoundException ex) {
            JOptionPane.showMessageDialog(null, "" + ex.getMessage());
        }
    }

4 Respostas

mateusviccari

cara nao é recomendado que voce use a mesma conexao durante todo o programa…
Porque voce nao cria uma classe Conexao, e dentro dela voce poe um statement, resultset e connection, ai no construtor dessa classe voce cria a Connection, e depois faz métodos como executar(String sql), executarQuery(String sql), fecharConexao()… ???
Se voce quer fazer com JDBC acredito que esse jeito fica facil de trabalhar!

jhonmarcos

mateusviccari:
cara nao é recomendado que voce use a mesma conexao durante todo o programa…
Porque voce nao cria uma classe Conexao, e dentro dela voce poe um statement, resultset e connection, ai no construtor dessa classe voce cria a Connection, e depois faz métodos como executar(String sql), executarQuery(String sql), fecharConexao()… ???
Se voce quer fazer com JDBC acredito que esse jeito fica facil de trabalhar!

Cara porque é assim, não tenho só esse pacote com código são vários pacotes que precisam da conexão e facilitaria fazer um pacote Conexão para todos os outros pacotes e depois só “sair” importando…

mateusviccari

mas a sua idéia é sair fazendo o import do que exatamente?

A

Pra fazer do jeito que você quer poderia alterar sua classe Conexao nos seguintes pontos:

1 - ao invés de declarar o método public static void main, declare public Connection getConexao() - por exemplo
2 - retire esse banco.close() - se vão usar a conexao que você está obtendo ela precisa estar aberta
3 - retorne esse objeto banco

Daí, lá na sua outra classe por exemplo, onde você comentou //Tentando de todas as formas que me lembro para importar… ^^ bastaria você colocar isso:

banco = new Conexao().getConexao()

Isso resolve seu problema do jeito que você colocou, mas pense no que o mateusviccari falou, porque centralizar essas operações em uma classe que gerencie a conexão e os acessos é a melhor idéia mesmo

Criado 10 de junho de 2012
Ultima resposta 10 de jun. de 2012
Respostas 4
Participantes 3