Nello script #564 abbiamo visto come si compatta un database Access con .NET sfruttando il late-binding di VB.NET prima e l'interop poi.
L'ultima possibilità da analizzare è l'utilizzo della reflection.
<%@ import namespace="System.Reflection" %> <SCRIPT runat="server" language="c#"> void Page_Load() { string db="db1.mdb"; // db1.mdb è il database da compattare string database, database2 database = Request.MapPath(db1); database2 = Request.MapPath("db2.mdb"); Type t=Type.GetTypeFromProgID("jro.JetEngine"); Object obj = Activator.CreateInstance(t); object[] dati={strConn,strConnTo}; t.InvokeMember("CompactDatabase",BindingFlags.InvokeMethod, null,obj,dati); } </SCRIPT> Naturalmente è inutile compattare un database in un secondo file. Di seguito c'è quindi l'ultimo esempio, con l'aggiunta della copia del file compattato sull'originale: <%@ import namespace="System.Reflection" %> <SCRIPT runat="server" language="c#"> void Page_Load(object sender, System.EventArgs e) { try { string db="db1.mdb"; // db1.mdb è il database da compattare string database, database2; database = Request.MapPath(db); database2 = database+"_copy"; if (File.Exists(database2)) File.Delete(database2); string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + database; string strConnTo = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + database2; Type t=Type.GetTypeFromProgID("jro.JetEngine"); Object obj = Activator.CreateInstance(t); object[] dati={strConn,strConnTo}; t.InvokeMember("CompactDatabase",BindingFlags.InvokeMethod, null,obj,dati); // Copio il nuovo file compresso sul precedente File.Copy(database2,database,true); File.Delete(database2); Response.Write ("ok"); } catch (Exception ex) { Response.Write("Errore: "+ex.Message); } } </SCRIPT>
Approfondimenti
Compattare un database Access con JRO e .NET
https://www.aspitalia.com/liste/usag/script.aspx?ID=564
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Short-circuiting della Pipeline in ASP.NET Core
Sfruttare i tag nell'output cache di ASP.NET Core 7
Raggruppare i parametri di una minimal API in un singolo oggetto in ASP.NET Core
Cache policy su route groups di Minimal API in ASP.NET Core 7
Gestire tipi complessi in query string grazie a IParsable in ASP.NET Core 7.0
Definire le impostazioni di cache a livello di controller in ASP.NET Core 7
Load test di ASP.NET Core con k6
Migliorare la scalabilità di ASP.NET Core 7 grazie all'output cache
Sfruttare la local cache del browser tramite gli ETag in ASP.NET Core
Usare ASP.NET Core dev tunnels per testare le applicazioni su internet
Usare gateway dedicati con Azure Cosmos DB per migliorare le prestazioni