# open( params )

> Open the SQL engine with McoSqlOpenParameters.

> ### For an overview see page McoSqlEngine

> ### Prototype

>         void open(McoSqlOpenParameters const &params);

> ### Arguments

> params | An initialized McoSqlOpenParameters instance specifying memory device(s) page size and other database open parameters

> ### Description

> This method opens an eXtremeDB database, an eXtremeDB SQL mapper and the McoSqlEngine instance with the parameters specified in the McoSqlOpenParameters argument `params`.

> ### Returns

> This method throws a RuntimeException in the case of an error.

> ### Example

>         const char * dbname = "RaidDb";
>         const int n_devices = 5;

>         int main(int argc, char* argv[])
>         {
>             MCO_RET rc;
>             mco_device_t       dev[n_devices];
>             McoSqlEngine engine;
>             McoSqlOpenParameters params;
>             ...
>             dev[0].type       = MCO_MEMORY_CONV;
>             dev[0].assignment = MCO_MEMORY_ASSIGN_DATABASE;
>             dev[0].size       = DATABASE_SIZE;
>             dev[0].dev.conv.ptr = (void*)malloc( DATABASE_SIZE );

>             dev[1].type       = MCO_MEMORY_CONV;
>             dev[1].assignment = MCO_MEMORY_ASSIGN_CACHE;
>             dev[1].size       = CACHE_SIZE;
>             dev[1].dev.conv.ptr = (void*)malloc( CACHE_SIZE );

>             dev[2].type       = MCO_MEMORY_RAID;
>             dev[2].assignment = MCO_MEMORY_ASSIGN_PERSISTENT;
>             strcpy(dev[2].dev.raid.name, "raidpart.1");
>             dev[2].dev.raid.flags = MCO_FILE_OPEN_DEFAULT;
>             dev[2].dev.raid.level = 1;

>             dev[3].type       = MCO_MEMORY_RAID;
>             dev[3].assignment = MCO_MEMORY_ASSIGN_PERSISTENT;
>             strcpy(dev[3].dev.raid.name, "raidpart.2");
>             dev[3].dev.raid.flags = MCO_FILE_OPEN_DEFAULT;
>             dev[3].dev.raid.level = 1;

>             dev[4].type       = MCO_MEMORY_FILE;
>             dev[4].assignment = MCO_MEMORY_ASSIGN_LOG;
>             strcpy(dev[4].dev.file.name, "persondb.log");
>             dev[4].dev.file.flags = MCO_FILE_OPEN_DEFAULT;

>             params.databaseName = (char *)db_name;
>             params.dictionary = persondb_get_dictionary();
>             params.mainMemoryDatabaseSize = DATABASE_SIZE;
>             params.mainMemoryPageSize = MEMORY_PAGE_SIZE;
>             params.n_devices = n_devices;
>             params.devices = dev;

>             engine.open(params);

>             ...
>         }