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
Short-circuiting della Pipeline in ASP.NET Core
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Load test di ASP.NET Core con k6
Implementare il throttling in ASP.NET Core
Eseguire una query su SQL Azure tramite un workflow di GitHub