Cancellazione directory

martedì 10 luglio 2007 - 11.03

AndreaB Profilo | Newbie

Ciao a tutti.

Nella mia applicazione windows, apro una connessione odbc a un database paradox con la seguente stringa di connessione ed eseguo una query:
"Driver={Microsoft Paradox Driver (*.db )};DriverID=538;Fil=Paradox 5.X;DefaultDir=" + <perocorso alla cartella del db> + ";Dbq=" + <perocorso alla cartella del db> + ";CollatingSequence=ASCII;".

Dopo aver chiuso la connessione e l'oggetto OdbcDataReader, vorrei cancellare la cartella in cui il database paradox è contenuto con l'istruzione Directory.Delete(<perocorso alla cartella del db>,true) ma ottengo un'eccezione perchè la cartella è utilizzata da un altro processo.

All'interno del codice non impiego alcun oggetto DirectoryInfo nè FileInfo.

Avete qualche suggerimento?
Grazie.

franco_rh Profilo | Junior Member

chiudi la connessione al database?
se qualche file nella cartella è aperto (cioè utilizzato in qualsiasi modo dall'applicazione) la cartella non può essere eliminata.
in extremis prova ad eliminare i singoli file contenuti nella cartella poichè penso che la cartella abbia un handle direttamente dalla sessione se non addirittura dall'applicazione e non lo rilascia se non termina la sessione o l'applicazione.
Magari potresti creare una global page e provare a cancellare la cartella dall'evento session_end (è teoria).
tutto quello che ho detto decade nel caso tu voglia cancellare una cartella di sistema: ti conviene creare una cartella personale in una directory del tipo: miosito/public/miacartelladaeliminare/ se no non se ne fa niente.
MarijCat

AndreaB Profilo | Newbie

Grazie per avermi risposto.
I file all'interno della cartella li riesco a cancellare e non utilizzo alcuna cartella di sistema.
Ti mostro il codice:

String directory="C:\\prova";
String connectionString = "Driver={Microsoft Paradox Driver (*.db )};DefaultDir=" + directory +
";Dbq=" + directory + ";CollatingSequence=ASCII;";

using (OdbcConnection odbcConnection = new OdbcConnection(connectionString))
{
OdbcCommand command = new OdbcCommand("SELECT * FROM Orders", odbcConnection);

command.Connection.Open();
OdbcDataReader odbcDataReader = command.ExecuteReader();

if (odbcDataReader.HasRows)
{
//.....
}
odbcDataReader.Close();
command.Connection.Close();
}

GC.Collect();

try
{
Directory.Delete(directory,true);
}
catch (Exception exc) { MessageBox.Show(exc.Message); }
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5