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
Blue/Green Release in locale con .NET Aspire
Modificare lo stile in una QuickGrid Blazor
Ottimizzare le API in ASP.NET con Feature Flags
Gestione opzioni colonna nella Blazor QuickGrid
Creare un indice su una colonna JSON in SQL Server
Supporto nativo a JSON in SQL Server 2025
Ottimizzare gli indici con Automatic Index Compaction in Azure SQL Database
Impostare la content-visibility in CSS per ottimizare il rendering iniziale di una pagina
Validare i dati di una colonna JSON in SQL Server
From Data to Insight: Exploratory Data Analysis with Python, VS Code and SQL MCP Server


