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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Implementare il throttling in ASP.NET Core
Raggruppare i parametri di una minimal API in un singolo oggetto in ASP.NET Core
Taggare la output cache in base al routing in ASP.NET Core
Gestire tipi complessi in query string grazie a IParsable in ASP.NET Core 7.0
Sfruttare l'output cache di ASP.NET Core 7 con i controller
Migliorare la scalabilità di ASP.NET Core 7 grazie all'output cache
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Definire le impostazioni di cache a livello di controller in ASP.NET Core 7
Catturare la telemetria degli eventi di output cache in ASP.NET Core
Short-circuiting della Pipeline in ASP.NET Core
Sfruttare la local cache del browser tramite gli ETag in ASP.NET Core