63 lines
2.3 KiB
C#
63 lines
2.3 KiB
C#
using System;
|
|
using System.Data;
|
|
using System.IO;
|
|
using System.Web;
|
|
|
|
using Zhaizj.Framework.Reflection;
|
|
using Zhaizj.Framework.Web;
|
|
using Zhaizj.Framework.Web.Mvc;
|
|
|
|
namespace Zhaizj.Framework.Data {
|
|
|
|
|
|
internal class DatabaseBuilder {
|
|
|
|
public static String ConnectionStringPrefix = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
|
|
private static readonly ILog logger = LogManager.GetLogger( typeof( DatabaseBuilder ) );
|
|
|
|
public static String BuildAccessDb4o() {
|
|
String dbPath = getDbPath();
|
|
BuildAccessDb4o( dbPath );
|
|
return dbPath;
|
|
}
|
|
|
|
public static void BuildAccessDb4o( String dbPath ) {
|
|
String str = ConnectionStringPrefix + dbPath;
|
|
logger.Info( "creating database : " + str );
|
|
Object instanceFromProgId = ReflectionUtil.GetInstanceFromProgId( "ADOX.Catalog" );
|
|
try {
|
|
ReflectionUtil.CallMethod( instanceFromProgId, "Create", new object[] { str } );
|
|
}
|
|
catch (Exception exception) {
|
|
logger.Info( "creating database error : " + exception.Message );
|
|
LogManager.Flush();
|
|
throw exception;
|
|
}
|
|
logger.Info( "create database ok" );
|
|
}
|
|
|
|
//public static void Compact( String dbPath ) {
|
|
// if (!File.Exists( dbPath )) {
|
|
// throw new Exception( "database not found" );
|
|
// }
|
|
// IDbConnection connection = DbContext.getConnection();
|
|
// if ((connection != null) && (connection.State == ConnectionState.Open)) {
|
|
// connection.Close();
|
|
// }
|
|
// String sourceFileName = dbPath + ".bak";
|
|
// ReflectionUtil.CallMethod( ReflectionUtil.GetInstanceFromProgId( "JRO.JetEngine" ), "CompactDatabase", new object[] { ConnectionStringPrefix + dbPath, ConnectionStringPrefix + sourceFileName } );
|
|
// File.Copy( sourceFileName, dbPath, true );
|
|
// File.Delete( sourceFileName );
|
|
//}
|
|
|
|
private static String getDbPath() {
|
|
DateTime now = DateTime.Now;
|
|
String path = "Zhaizj.FrameworkDB_" + Guid.NewGuid().ToString().Replace( "-", "" ) + ".mdb";
|
|
path = PathHelper.Map( path );
|
|
return path;
|
|
}
|
|
|
|
}
|
|
}
|
|
|