Files
lserp_cs_5.0/插件库/Zhaizj.Framework/Data/DatabaseBuilder.cs
T
2026-07-10 15:25:05 +08:00

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;
}
}
}