evoluindo o código de acesso ao banco de dados

Uma primeira medida para melhora do código inicial apresentado é retirar a conexão com o banco de dados para outra classe que irá manter a conexão ativa enquanto o programa estiver ativo, evitando assim gastar multiplas vezes o tempo de atutenticação com o banco de dados, veja o exemplo abaixo de uma classe para gerenciar a conexão:

Conexao.java

01 package br.com.thz.samples.db;
02 
03 import java.sql.Connection;
04 import java.sql.DriverManager;
05 
06 public class Conexao {
07   static Connection conexao = null;
08 
09   static String caminho = "jdbc:mysql://127.0.0.1:3306/java";
10 
11   static String usuario = "teste";
12 
13   static String senha = "123";
14 
15   public static Connection getConnection() throws Exception {
16     try {
17       if (conexao == null || conexao.isClosed()) {
18 
19         DriverManager.registerDriver(new org.gjt.mm.mysql.Driver());
20 
21         conexao = DriverManager.getConnection(caminho, usuario, senha);
22       }
23     catch (Exception e) {
24       e.printStackTrace();
25       throw new Exception("Erro conectando ao banco de dados");
26     }
27     return conexao;
28   }
29 }
Esta classe irá manter em uma váriável de classe chamada conexao a conexao

Esta classe irá manter em uma váriável de classe chamada conexao a conexao estabelecida com o banco de dados, para o seu uso basta sempre que precisar do objeto de conexão chamar o método getConnection( ) veja abaixo a classe de inserção no banco de dados alterada para usar a classe de conexão

IncluirBanco2.java
01 package br.com.thz.samples.db;
02 
03 import java.sql.ResultSet;
04 import java.sql.SQLException;
05 import java.sql.Statement;
06 
07 public class IncluirBanco2 {
08 
09   public static void main(String arg[]) throws Exception {
10 
11     ResultSet resultado = null;
12     Statement instrucao = null;
13 
14     try {
15       String incluir = "novo nome";
16 
17       String sql = "INSERT INTO cliente ( nome ) VALUES ('" + incluir
18           "')";
19 
20       instrucao = Conexao.getConnection().createStatement();
21       instrucao.executeUpdate(sql);
22 
23     catch (SQLException e) {
24       e.printStackTrace();
25       throw new Exception("Erro inserindo dados de cliente");
26 
27     catch (Exception e) {
28       e.printStackTrace();
29 
30     }
31 
32     if (resultado != null) {
33       resultado.close();
34     }
35 
36     if (instrucao != null) {
37       instrucao.close();
38     }
39 
40     Conexao.getConnection().close();
41   }
42 }

Leave a Reply