Compattare un database Access con JRO e .NET

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

Nello script #58 e #196 sono presenti delle tecniche per compattare - liberando in questo modo spazio inutilizzato - un database in formato Access.
E' possibile utilizzare questa tecnica anche con la tecnologia .NET.
Inizialmente sarà esposto un esempio in VB.NET, linguaggio che, a differenza del C#, permette l'esecuzione late-binding:

<SCRIPT runat="server" language="vb">
sub Page_Load()
  dim db as string="db1.mdb" ' db1.mdb è il database da compattare
  Dim database, database2 As String
  database = Request.MapPath(db)
  database2 = Request.MapPath("db2.mdb") ' db2 è il database compattato
  Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & database
  Dim strConnTo As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & database2
  Dim objJro As Object = Server.CreateObject("jro.JetEngine")
  objJro.CompactDatabase(strConn,strConnTo)
  objJro = Nothing
end sub
</SCRIPT>

Se si osserva questo codice si noterà che non differenzia da quello per Classi ASP grazie alla possibilità di VB.NET di richiamare funzioni in late-binding.

In C# - o attivando "strict on" in VB.NET - tale codice non sarà più utilizzabile e dovremo usare altre strade.
Se utilizziamo VS.NET possiamo risolvere il tutto con pochi click del mouse. Nel solution Explorer selezione References, quindi "Add References", selezioniamo il tab COM e poi "Microsoft Jet and Replication Ojects 2.x Library" per generare il wrapper di questa classe.

Ora sarà possibile utilizzare quell'oggetto COM, con la funzione "CompactDatabase", all'interno delle pagine C#:

<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");
  JRO.JetEngineClass jro = new JRO.JetEngineClass();
  jro.CompactDatabase(database,database2);
}
</SCRIPT>

In alternativa a Visual Studio .NET, possiamo utilizzare il comando tlbimp.exe dalla console per creare il wrapper.
Prossimamente vedremo come fare lo stesso sfruttando la reflection.

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