Criar e destruir fonte de dados no access em tempo de execução

2 respostas
levimendes

Olá pessoal, estou com o seguinte problema:
Estou tendo que trabalhar com o access, não tenho como fugir.
Gostaria de saber se há alguma possibilidade de se criar uma fonte de dados(odbc) em runtime.
Apareceu esta necessidade porque estou trabalhando com importação e exportação de dados.
O usuário irá selecionar uma base de dados access, e apartir deste banco (que poderá estar
em qualquer diretório da máquina), ele irá exportar os dados desse banco para a base
de dados oracle. Então eu acho inviável orientar o usuário a criar uma fonte de dados apenas
para exportar os dados (que poderá não ser mais usada), visto também que poderá haver 'n’
banco de dados (access) que poderão ser exportados, o usuário teria então que criar uma
fonte de dados para cada base de dados access.

Então eu pensei que se pudesse haver algum meio de se criar e destruir a fonte de dados
em runtime seria uma boa (pode ser loucura).

Isto é possível?

Alguém tem outra idéia?

Eis aí mais ou menos o que eu quero fazer:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.swing.JOptionPane;

public class Class1 {
    public Class1() {
        super();
    }

    public static void main(String[] args) {
        
        //String dataSourceName = "nome_fonte";
    	String dataSourceName = "C://Documents and Settings//levi//Meus documentos//Projetos java Eclipse//TesteConexoesSimultanea//teste.mdb";
        String dbURL = "jdbc:odbc:" + dataSourceName;
        try { 
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            
            Connection con = DriverManager.getConnection(dbURL, "",""); 
            Statement s = con.createStatement();
            s.execute("insert into BACIA values(10,10,10,10,10,10,'10','04/02/2010','04/02/2010',10)"); 
            s.execute("select RegistroID from Bacia"); 
            
            if (!con.isClosed()) {
            	JOptionPane.showMessageDialog(null, "A conexão está aberta");
            } else {
            	JOptionPane.showMessageDialog(null, "A conexão está fechada");
            }
            
            ResultSet rs = s.getResultSet(); 
            if (rs != null) 
                while ( rs.next() ) 
                {
                	System.out.println("Data from RegistroID: " + rs.getString(1) );
                }
                s.execute("delete from BACIA where RegistroID = 10");
                s.close(); 
                con.close(); 
                     
               //neste ponto eu quero destruir a fonte
        }
        catch (Exception err) {
        	err.printStackTrace();
            System.out.println( "Error: " + err );
        }       
    }
}

2 Respostas

E

Use o parãmetro DBQ. Veja um exemplo em:

http://www.rgagnon.com/javadetails/java-0107.html

levimendes

É exatamente isso que eu estou precisando,

obrigado entanglement.
:smiley: :smiley: :smiley: :smiley:

Criado 15 de julho de 2011
Ultima resposta 18 de jul. de 2011
Respostas 2
Participantes 2