McoSqlOpenParameters类
示例 api_sql_02_open_initililize 展示了如何使用默认的打开参数以及简单地调用 engine.open()
来管理内存数据库。若要管理持久化或混合数据库(包含持久化和临时类),或者管理具有多个内存段的数据库,则需要额外的步骤来定义内存设备以及运行时缓存和日志参数。这可以通过设置 McoSqlOpenParameters 并将其传递给 McoSqlEngine.Open()
方法来实现。
int main()
{
McoSqlOpenParameters params;
// 设置 MCO SQL 参数
params.databaseName = "persondb";
params.dictionary = persondb_get_dictionary();
params.mainMemoryDatabaseSize = MEMORY_DATABASE_SIZE;
params.mainMemoryPageSize = PAGE_SIZE;
params.diskDatabaseFile = "persondb.dbs";
params.diskDatabaseLogFile = "persondb.log";
params.diskCacheSize = DISK_CACHE_SIZE;
params.logType = REDO_LOG;
engine.open(params);
// 数据库处理代码
engine.close();
return 0;
}
可以通过调用 setDefaultValues()
方法来设置 McoSqlOpenParameters 的默认值,具体如下:
void McoSqlOpenParameters::setDefaultValues()
{
databaseName = NULL;
dictionary = NULL;
mainMemoryDatabaseSize = 0;
mainMemoryDatabaseAddress = MCO_DATABASE_DEFAULT_MAP_ADDRESS;
maxTransactionSize = 0;
maxConnections = 100;
mainMemoryPageSize = 128;
hashLoadFactor = 100;
flags = DEFAULT_OPEN_FLAGS;
modeMask = 0;
savedImage = NULL;
diskDatabaseFile = NULL;
diskDatabaseLogFile = NULL;
diskDatabaseMaxSize = MCO_INFINITE_DATABASE_SIZE;
diskCacheMemoryAddress = 0;
diskCacheSize = 0;
diskPageSize = 4096;
streamReader = NULL;
stream = NULL;
remoteEngine = NULL;
redoLogLimit = MCO_DEFAULT_REDO_LOG_LIMIT;
logType = REDO_LOG;
defaultCommitPolicy = MCO_COMMIT_SYNC_FLUSH;
transSchedPolicy = MCO_SCHED_FIFO;
devices = NULL;
n_devices = 0;
tables = NULL;
n_tables = 0;
maxClasses = 0;
maxIndexes = 0;
maxDictionarySize = 0;
dictionaryFlags = 0;
maxTransTime = 0;
maxActivePages = 32;
}