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; Esta classe irá manter em uma váriável de classe chamada conexao a conexao
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 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 }
