Criando um objeto de Conexão?

Bom Galera, estou tendo algumas dúvidas em como criar um objeto de conexão, na verdade não em como criar o objeto, mas sim em chamar o objeto. vamos lá!!!


// Esse é o codigo quando o usuário aperta o botão salvar!!!
// A conexão funciona legal!!

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

            Class.forName("com.mysql.jdbc.Driver");

            Connection conn;

            conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1/funcionario", "root", "11111");

            String query = "INSERT INTO dados_curso (curso_cadastrado) VALUES (?)";

            PreparedStatement stmt = conn.prepareStatement(query);

            stmt.setString(1, camp_curso.getText());

            stmt.executeUpdate();

            stmt.close();
            conn.close();


        } catch (ClassNotFoundException classNotFound){
            classNotFound.printStackTrace();
            System.exit(1);

        } catch (SQLException sqlException){
            sqlException.printStackTrace();
            System.exit(1);


        }

    }       

Tenho um outro codigo, onde eu carrego o ComboBox com esses dados!!!

try {
            Class.forName("com.mysql.jdbc.Driver");

            Connection conn;

            conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1/funcionario", "root", "11111");

            String query = "SELECT * FROM dados_contrato";

            PreparedStatement stmt = conn.prepareStatement(query);

            ResultSet rs;

            rs = stmt.executeQuery();

                while (rs.next()){

                    cb_contrato.addItem(rs.getString("contrato"));
                    
                }

            stmt.close();
            conn.close();


        } catch (ClassNotFoundException classNotFound){
            classNotFound.printStackTrace();

        }  catch (SQLException sqlException){
            sqlException.printStackTrace();
        }
        
        try {

            Class.forName("com.mysql.jdbc.Driver");

            Connection conn;

            conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1/funcionario", "root", "11111");

            String query = "SELECT * FROM dados_curso";

            PreparedStatement stmt = conn.prepareStatement(query);

            ResultSet rs;

            rs = stmt.executeQuery();
                      

                while (rs.next()){
                    
                    cb_curso1.addItem(rs.getString("curso_cadastrado"));
                    cb_curso2.addItem(rs.getString("curso_cadastrado"));
                    cb_curso3.addItem(rs.getString("curso_cadastrado"));
                    cb_curso4.addItem(rs.getString("curso_cadastrado"));
                    cb_curso5.addItem(rs.getString("curso_cadastrado"));
                    cb_curso6.addItem(rs.getString("curso_cadastrado"));
                    cb_curso7.addItem(rs.getString("curso_cadastrado"));
                    cb_curso8.addItem(rs.getString("curso_cadastrado"));
                  
                }

            stmt.close();
            conn.close();


        } catch (ClassNotFoundException classNotFound){
            classNotFound.printStackTrace();

        }  catch (SQLException sqlException){
            sqlException.printStackTrace();
        }


      
    }

Essa é minha classe de conexão!!!

package Banco;

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

public class ConectaBanco {
    public static Connection getConnection;

    public static void main (String[] args) throws SQLException{

        Connection connection = null;
        String   res;

      try
      {


          String driverName = "com.mysql.jdbc.Driver";

          Class.forName(driverName);

          String serverName = "127.0.0.1";
          String mydatabase = "funcionario";
          String url = "jdbc:mysql://" +serverName + "/" + mydatabase;
          String username = "root";
          String password = "11111";
          connection = DriverManager.getConnection(url, username, password);
          JOptionPane.showMessageDialog(null, "Você esta Conectado");


        } catch (ClassNotFoundException classNotFound){
            classNotFound.printStackTrace();

        } catch (SQLException sqlException){
            sqlException.printStackTrace();


        }
    }

   }

Minhas dúvidas!!!

1 - A classe conexão esta correta???
2 - como faço pra fazer essa classe funcionar??
3 - O que preciso mudar???
4 - Meu codigo fica muito poluído, sempre repetindo as linhas de conexão em tudo que se comunica com o banco, então como faço pra mudar isso???

Obrigado galera, pela atenção!!!

Crie um novo método na classe de conexão ou uma outra classe que faça a execução dos métodos CRUD.
Primeiro identifique o que é comum a todas as chamadas (parâmetros e chamadas).
Aí é só criar a estrutura e pronto.

[quote=drsmachado]Crie um novo método na classe de conexão ou uma outra classe que faça a execução dos métodos CRUD.
Primeiro identifique o que é comum a todas as chamadas (parâmetros e chamadas).
Aí é só criar a estrutura e pronto.[/quote]

Tenho que consultar o Banco. Quero fazer um obejto pra essas linhas!!!

try {

            Class.forName("com.mysql.jdbc.Driver");

            Connection conn;

            conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1/funcionario", "root", "11111");

            String query = "INSERT INTO dados_curso (curso_cadastrado) VALUES (?)";

            PreparedStatement stmt = conn.prepareStatement(query);

Tipo, eu tenho de ficar repetindo as linhas:
03
05
07
11

Quero criar o objeto de conexão e chamar o objeto!!! mas… não sei chamar o objeto de conexão!!! :cry:

Você possui um método construtor.
Se criar um método para SELECT, por exemplo, basta invocar o método de conexão.
1 - Renomeie de main para public void criaConexao(), por exemplo
2 - Invoque este método no método que irá utilizar este

...
public void criaConexao(){
try{
 ..
}
..
}

public Object executaSelect(){
 criaConexao();
 // logica aqui
}

[quote=drsmachado]Você possui um método construtor.
Se criar um método para SELECT, por exemplo, basta invocar o método de conexão.
1 - Renomeie de main para public void criaConexao(), por exemplo
2 - Invoque este método no método que irá utilizar este

[code]

public void criaConexao(){
try{

}

}

public Object executaSelect(){
criaConexao();
// logica aqui
}
[/code][/quote]

Ok!!! entendi essa parte.
Mas como substituo a linha

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

            Class.forName("com.mysql.jdbc.Driver");

            Connection conn;

            conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1/funcionario", "root", "11111"); // onde eu chamo meu metodo de conexão aqui???

            String query = "INSERT INTO dados_curso (curso_cadastrado) VALUES (?)";

            PreparedStatement stmt = conn.prepareStatement(query);

            stmt.setString(1, camp_curso.getText());

            stmt.executeUpdate();

            stmt.close();
            conn.close();


        } catch (ClassNotFoundException classNotFound){
            classNotFound.printStackTrace();
            System.exit(1);

        } catch (SQLException sqlException){
            sqlException.printStackTrace();
            System.exit(1);


        }

    }       

Isso está na camada swing da tua aplicação e isto é uma má prática.
Tire tudo o que se refere a banco de dados da tela, para ir se acostumando com as boas maneiras de programas.
Para o que você quer fazer, basta instanciar a classe de conexão, invocar o método de acesso ao banco e os métodos que irá utilizar

...
ConectaBanco cb = new ConectaBanco();
try{
  cb.criaConexao();
  //aqui pode ser necessára a passagem de 
  //parâmetros, então, modifique o método 
  //executaSelect para que ele receba a query ou os 
  //parametros que a comporão.
  // cb.executaSelect(codigo_a_ser_pesquisado);
  //ou
  //cb.executaSelect(query);
  cb.executaSelect();
}

dependendo do caso…
… é uma grande mão usar um framework que organize essa parte

como o hibernate

ele já tem os metodos necessarios implementados
é basicamente só configurar o banco, o dialeto, outras coisinhas simples e usar

dá pra gerenciar o numero maximo de conexões que teu sistema permite e talz…

… mas com citei ante, depende do teu caso, se será um sistema grande, pequeno, muitos ou poucos usarios e acessos ao banco…

é questão de se analisar!
até mais!
:wink:

Tucano, o nosso camarada é iniciante. Ele está com dificuldades em algo muito mais simples que os temidos xmls que o hibernate precisa (sem falar que anotation agora irá deixá-lo perdido também).
O melhor é ir passo a passo, quando ele estiver familiarizado com a forma de acesso JDBC, aí sim ele poderá almejar novos desafios.

é…
faz sentido o que comentaste drsmachado…
hehe

… sendo a prioridade aprender primeiro “no braço” vai facilitar muito depois para um proximo passo ao rapaz ai…

até mais!
:wink: