Compattare un database Access con JRO, .NET e la Reflection

di Andrea Zani, in UserScript, ASP.NET, C#,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi