#567 - Compattare un database Access con JRO, .NET e la Reflection
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>Per approfondimenti si veda:
Compattare un database Access con JRO e .NET
http://www.aspitalia.com/liste/usag/script.aspx?ID=564
Approfondimenti
- Attaccare bottone
- Dal MIX08 la Preview2 di ASP.NET MVC
- Speciale per il lancio di Visual Studio 2008, SQL Server 2008 e Windows Server 2008 dal 25/02 al 07/03
- ASP.NET 3.5: global.asax vs managed modules
- DropDowList tu mi tradisci
- Introduzione ad ASP.NET 3.5: novità e caratteristiche
- #945 - Verificare l'accesso ai file mediante l'UrlAuthorizationModule di ASP.NET
- Realizzare applicazioni ASP.NET sicure - Prima parte
- #910 - Incrementare le performance di ASP.NET rimuondo gli HttpModule non necessari
- #941 - Gestire al meglio gli eventi RowCommand di GridView e ItemCommand di DetailsView e FormsView con la classe DataControlCommands
- #907 - Utilizzo di XmlSerializer con custom collection
Commenti
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.








Stampa
Snippet
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!