Como fechar e abrir ou resetar uma conexão odbc

Galera é o seguinte, fiz uma conexão com um ODBC proprietário chamado FLEX ODBC para acessar um banco de dados DATAFLEX, ele utiliza uma variável de ambiente do Windows que crio chamada de DFPATH, com a grande ajuda de um colega aqui do fórum consegui pelo Java modificar esta variável dentro por dentro do Java, só que o que acontece é o seguinte, quando abro o programa em Java pela primeira vez clico no botão que criei e septo a variável para DFPATH=C:\Escritorio\01, ai o sistema lista direitinho o que tem no banco, então clico no segundo botão e ele muda a variável para DFPATH=C:\Escritorio\02, só que neste momento ele continua listando o que estava na variável 01, ele apenas assume a nova variável se eu fechar o netbeans e abrir novamente.
Então acredito que o sistema deva fechar de uma maneira total talvez pelo Windows um reset na fonte de dados ODBC do Windows, não sei, só sei que too pra pirar rsrsrsrsr.
Se alguém souber algo, por favor, aceito todas as ideias, abaixo mostro como conecto e pesquiso.

Grato.

Classe de Conexão

package BancoDeDados;

import java.sql.*;

public class DAO {

    public Connection con = null;
    public PreparedStatement pstmt;
    public ResultSet rs;

    public void OpenDatabase() throws Exception {

        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        con = DriverManager.getConnection("jdbc:odbc:Sgp", "", "");
        System.out.println("Abriu");

    }

    public void CloseDatabase() throws Exception {

        if (con != null) {

            con.close();
            System.out.println("Fechou");

        }

    }
}

Metodo que gera a Lista

    public List<Fornecedor> getLista() throws SQLException, Exception {

        OpenDatabase();
        String sql = "select top 1 * from stab46"; 
        pstmt = con.prepareStatement(sql);
        rs = pstmt.executeQuery();
        List<Fornecedor> minhaLista = new ArrayList<Fornecedor>();

        while (rs.next()) {
            
            Fornecedor a1 = new Fornecedor();
            a1.setFIELD_2(rs.getString("RSOCIAL"));
            minhaLista.add(a1);
            
        }
        
        CloseDatabase();
        return minhaLista;
        
    }

Não sei como vc conseguiu alterar a variavel de ambiente utilizando java. Na verdade nunca precisei fazer isso.
Agora se vc consegue mudar a variavel quando clica no botão, então vou confiar que a variavel está sendo alterada conforme vc falou.

Veja o que acontece se vc fizer isso:

     public void CloseDatabase() throws Exception {     
         if (con != null) {     
             con.close();  
             System.out.println(&quot;Fechou&quot;);  
             con=null;                                    &lt;================ acrescente essa linha
         }  

Se vc acrecentar essa linha, conforme sugeri, e continuar com o problema, então é porque o serviço do BD deverá resetar a variavel DFPATH.

Caro Luiz Augusto Prado, infelizmente não funcionou você sabe sem tem outra maneira de resolver?

Grato

[quote=jaimbiriba]Caro Luiz Augusto Prado, infelizmente não funcionou você sabe sem tem outra maneira de resolver?
Grato
[/quote]

Eu não conheco esse banco de dados. Só utilizei alguns como Accesses, Firebird, Postgree e MySQL.
Mas pelo que entendo desses programas quando eles são instalados como um serviço, quando eles iniciam que eles capturam as variaveis de ambiente. Enquanto estão sendo executados, não precisam pegar as variaveis de ambiente novamente.
Então tenta mudar seu programa de forma a seguir esses passos:
inicia o seu programa java. Quando clicar no botão para FECHAR a conexão, fechar a conexão, anular a variavel con e aproveita para mudar a variavel de ambiente. Nesse ponto o seu serviço estára rodando mas ele ainda não atualizou a variavel de abiente.
Reinicie o Banco de dados.(Sem fechar seu programa).
Depois que ele tiver reiniciado, tenta abrir a 2 vez sua conexão clicando no botão que vc criou.
Dessa forma o banco de dados inicializará com a nova a variavel de ambiente.
Se não funcionar dessa vez, então terá que aguardar outro usuario mais experiente do que eu.
[]'s e sucesso.