Problema com DriverManager

4 respostas
Sansalone

Olá pessoal!!!

Estou desenvolvendo um pequeno gerenciador de bases de dados Derby e estou com problemas com a classe DriverManager para conectar à base.

Acontece o seguinte:

Tenho um banco derby da aplicação que guarda o caminho das bases de dados que ela usa. No início da aplicação, faço um select nesta base retornando todos os caminhos e a aplicação testa a conexão com todos estes caminhos pra ver se são mesmo bases de dados.
Na aplicação é possível criar e remover bases de dados, mas o problema é que após ter testado a conexão com ela, mesmo fechando as conexões e tudo mais, não consigo deletar a base de dados, nem pelo java nem pelo windows, acusa erro dizendo que o arquivo está sendo usado por outro programa.

O que eu faço?? Como eu resolvo isso?

Se puderem me ajudar ficarei grato!!

Vlw!

4 Respostas

julianosts

Você diz após fechar o seu projeto? nao é possivel fechar a tabela onde?

Você diz que não consegue deletar a base de dados pelo windows??

Tem como voce postar os erros ?

abrss

Sansalone

Se eu usar o DriverManager(“jdbc:derby:”) o próprio DriverManager bloqueia o acesso ao arquivo da base de dados.

Não é exatamente um erro, mas após testar a conexão com a base, mesmo fechando a conexão eu não consigo deletar o arquivo, nem renomear.

Sansalone

Eu só consigo mexer no arquivo da base de dados após encerrar me programa, porque aí o arquivo será liberado

Sansalone

Analise o cenário do que acontece:

Considerando que eu tenha duas bases de dados derby ‘base_a’ e ‘base_b’ e vou testar a conexão com estas duas.

public class ArquivoBloqueado{

public ArquivoBloqueado(){

	try{
		
		// me conectei à base de dados
		Connection conn = DriverManager.getConnection("jdbc:derby://localhost/base_a");
		
		// NÃO ESTOU MAIS CONECTADO À 'BASE_A' E SIM À 'BASE_B'
		// descartei aquela conexão e me conectei à outra base
		conn = DriverManager.getConnection("jdbc:derby://localhost/base_b");
		
		/*
			aqui faço alguma coisa para continuar a execução do programa
		*/
		
	}catch(SQLException e){
	
	}

}

}

Após estas duas conexões, enquanto a aplicação está sendo executada, se eu tentar excluir, tanto pelo windows quanto pelo java,
a base ‘base_a’, a aplicação não deixa porque está bloqueando o arquivo, mas não estou mais conectado à base ‘base_a’.

Como eu resolvo este problema, alguém pode me ajudar?

Obrigado!

Criado 12 de janeiro de 2012
Ultima resposta 17 de jan. de 2012
Respostas 4
Participantes 2