Carregar driver JDBC em tempo de execução.  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
venomtotal
Java Ninja
[Avatar]

Membro desde: 24/04/2006 00:09:57
Mensagens: 298
Offline

Estou fazendo uma aplicação swing para conectar-se numa base de dados. Nela o usuário passará as informações de conexão como: ip, usuario, senha e etc...

Também haverá a opção de através de um filechooser, ele possa apontar onde está o arquivo jar do driver jdbc. A minha dúvida é como fazer para carregar este arquivo jar em tempo de execução.

Num projeto normalzinho, onde sei qual o banco e versao do driver que o usuário usará, é muito fácil, pois basta vincular o arquivo jar através da IDE.

Mas em tempo de execução?

Agradeço qualquer ajuda.

venom

This message was edited 2 times. Last update was at 10/01/2008 00:20:55

rafaelglauber
GUJ Master
[Avatar]

Membro desde: 07/09/2007 23:05:20
Mensagens: 1065
Localização: Feira de Santana
Offline

Provalmente terá que limitar a alguns banco de dados, por exemplo, a url do oracle é diferente a montagem para o banco firebird por exemplo, terá que além de carregar o jar ainda perguntar a qual banco se destina para montar a url. Com relação a esse "carregamento", acredito que se vc sempre copiar os arquivos para o seu ClassPath não terá problemas em fazer o Load dinamicamente.
venomtotal
Java Ninja
[Avatar]

Membro desde: 24/04/2006 00:09:57
Mensagens: 298
Offline

rafaelglauber wrote:Provalmente terá que limitar a alguns banco de dados, por exemplo, a url do oracle é diferente a montagem para o banco firebird por exemplo, terá que além de carregar o jar ainda perguntar a qual banco se destina para montar a url. Com relação a esse "carregamento", acredito que se vc sempre copiar os arquivos para o seu ClassPath não terá problemas em fazer o Load dinamicamente.


hmm. Tinha esquecido de dizer, o usuário irá passar a string do banco correspondente, mas referente ao carregamento e classpath.

Se eu estiver falando besteira me corrija(sou novato), mas como vou alterar o classpath enquanto a aplicação tiver rodando? Tem algum comando ou variavel interna do java que faça isso? Pergunto, porque pesquisei a sua sugestao e so vi configuração do classpath manualmente: http://www.guj.com.br/java.artigo.108.1.guj

Na teoria o bom seria neste projeto ter algo assim:
-------------------------------------------------------

//variavel que aponta o local do arquivo jar. O valor será obtido através do JFileChooser
String localDoArquivo;

ClassPath = localDoArquivo;

-----------------------------------------------------

Agradeço qualquer ajuda

VENOM
venomtotal
Java Ninja
[Avatar]

Membro desde: 24/04/2006 00:09:57
Mensagens: 298
Offline

Ah, desculpa, a resposta saiu incompleta:

Na verdade, eu percebi as duas maneiras de fazer isso:
01-Alterar o ClassPath, adicionando o caminho do arquivo jar nele.
02-o que você sugeriu, copiar o arquivo jar pra algum dos diretórios contidos no ClassPath.

De qualquer forma, eu precisso ler e escrever o conteudo no ClassPAth. Como fazer isso?
kaique
GUJ Ranger
[Avatar]

Membro desde: 10/04/2006 07:06:06
Mensagens: 911
Localização: Fortaleza-CE
Offline

Cara, não sei se minha dica irá te ajudar muito para resolver seu problema, mas dá uma pesquisada sobre ClassLoaders em Java...
Aqui no GUJ tem um artigo que fala sobre isso. Acho que ele pode te dar uma noção da sua funcionalidade. Aí você vê se ajuda...
Aqui vai o link para a classe na API do Java:
http://java.sun.com/javase/6/docs/api/java/lang/ClassLoader.html

[]'s.

/**
*
* Carlos Henrique
* carlosce@gmail.com
* kaiquece@hotmail.com
*
* Sun Certified Programmer for the Java 2 Platform, SE 5.0
* Sun Certified Web Component Developer for J2EE 1.4
* Sun Certified Bussiness Component Developer for J2EE 1.3
*
*/
[MSN]
falvesti
JavaBaby
[Avatar]

Membro desde: 17/10/2007 06:57:33
Mensagens: 90
Localização: São Paulo - SP
Offline

Cara quando fiz meu TCC passei pelo mesmo probelma. Pelo que entendi vc precisa instanciar um jar no classpath em tempo de execução, correto?

Não lembro de kbça como faz mas tenho em casa no código fonte do meu TCC. Hoje anoite te passo.

Abraço

Fernando da Cunha Alves
Consultor Java
falvesti@gmail.com
[Email] [WWW] [MSN]
falvesti
JavaBaby
[Avatar]

Membro desde: 17/10/2007 06:57:33
Mensagens: 90
Localização: São Paulo - SP
Offline

Boa notícia!!! Achei o código aki no trampo. Segue:



Abraço!

Fernando da Cunha Alves
Consultor Java
falvesti@gmail.com
[Email] [WWW] [MSN]
plic_ploc
JavaChild

Membro desde: 11/06/2006 18:55:12
Mensagens: 137
Localização: Ibitinga - SP
Offline

isso resolve seu problema


Java MVC - Brutos framework
Faça o download de um WebChat feito usando o Brutos MVC
Gobain
JavaTeenager
[Avatar]

Membro desde: 27/06/2007 13:10:28
Mensagens: 176
Localização: Curitiba
Offline

Então, eu fiz um programinha na faculdade pra mexer com BD q carregava o jar em tempo de execução.
Tem um porém na hr de carregar o driver q eu não consegui encontrar explicação alguma, mas funcionou... Talvez alguém possa explicar o porque disso.

Aqui carrega o jar e retorna uma instância do Driver


Aqui usa o driver carregado para conexão


Agora vem o porém... se vc passar o driver direto pra registrar com o DriverManager não passa... não sei pq. Daí eu achei num paper muito do além q o cara tinha feito essa implementação da classe Driver, e com isso o DriverManager aceita o driver em tempo de execução.


Não tem nada de mais a implementação, mas funciona, e isso é o q as vezes é o mais importante

This message was edited 1 time. Last update was at 10/01/2008 10:23:47

[WWW] [MSN] [ICQ]
venomtotal
Java Ninja
[Avatar]

Membro desde: 24/04/2006 00:09:57
Mensagens: 298
Offline

Agradeço a todos pela disposição de ajudar e pelas respostas.

Amanhã vou testar e depois posto no que deu

venom
Zeed01
Virtual Machine Man

Membro desde: 27/10/2006 16:44:29
Mensagens: 668
Offline

Boa noite Colegas !

Estou com o mesmo problema...

Gobain:

No seu código o que deve ser passado no parametro driverClass no método:

private Driver carregarDriverJar(String caminho, String driverClass) {

??

Obrigado.

Um abraço.
maquiavelbona
JWizard
[Avatar]

Membro desde: 29/06/2006 09:06:51
Mensagens: 2447
Localização: São Paulo - SP
Offline

Será que dar uma olhada nos sources de softwares como o SquirrelSql, ISQL e sql workbench não ajuda mais? Creio que os desenvolvedores tiveram esses mesmos problemas e ainda outros que vocês poderão ter.

Até!

----------------------------------------------------------------
"Within a few years a simple and inexpensive device, readily carried about, will enable one to receive on land or sea the principal news, to hear a speech, a lecture, a song or play of a musical instrument, conveyed from any other region of the globe. "
Nikola Tesla - A means for furthering Peace (1905)

"Gedanken ohne Inhalt sind leer, Anschauungen ohne Begriffe sind blind."
Immanuel Kant - Kritik der reinen Vernunft (1781)
Zeed01
Virtual Machine Man

Membro desde: 27/10/2006 16:44:29
Mensagens: 668
Offline

Boa madrugada Colegas !

maquiavelbona:

Confesso que baixei os fontes do SquirrelSql... mas não consegui encontrar a resposta.

Você tem a solução para me ajudar ?

Obrigado.

Um abraço.
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team