Pergunta

Estou tentando renomear meu arquivo de banco de dados SQLITE depois de terminar o uso, no entanto, o arquivo ainda parece ser aberto pelo SQLite mesmo depois de todas as minhas conexões estarem fechadas.

Aqui está um exemplo do que estou fazendo:

using (DbConnection conn = new SQLiteConnection("Data Source=test.db"))
{
    conn.Open();
    DbCommand command = conn.CreateCommand();
    command.CommandText = "select id from test";
    command.ExecuteScalar();
}
File.Move("test.db", "test.db.test");

o Move A chamada lança uma ioexception. Esta é a única conexão que eu tenho com este arquivo de banco de dados. Quando o aplicativo termina, posso mover o arquivo manualmente sem problemas. Eu tentei várias coisas, como definir explicitamente Pooling=false Na string de conexão, chamando manualmente Close Antes da disposição da conexão, iniciando e cometendo uma transação explicitamente, mas nada disso parece ajudar. Existe uma maneira de forçar o sqlite a fechar/liberar o arquivo de banco de dados sem sair do aplicativo?

Foi útil?

Solução

Eu presumo que você está usando Sqlite.net? Acabei de experimentar seu código e funciona sem problemas com o sqlite.net 1.0.65, no vs 2005 no Vista.

Outras dicas

DBCommand é IDisposable. Talvez você precise ligar Dispose nele ou crie -o em um using declaração.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top