Files
mql5-skills/skills/mql5/references/docs/30-database/1040-database-databaseopen.md
T
2026-06-23 21:47:51 +08:00

2.5 KiB
Raw Blame History

DatabaseOpen

Opens or creates a database in a specified file.

int  DatabaseOpen(
   string  filename,      // file name
   uint    flags          // combination of flags
   );

Parameters

filename

[in]  File name relative to the "MQL5\Files" folder.

flags

[in]  Combination of flags from the ENUM_DATABASE_OPEN_FLAGS enumeration.

Return Value

If executed successfully, the function returns the database handle, which is then used to access the database. Otherwise, it returns INVALID_HANDLE. To get the error code, use GetLastError(), the possible responses are:

  • ERR_INTERNAL_ERROR (4001)                       critical runtime error;

  • ERR_WRONG_INTERNAL_PARAMETER (4002)  - internal error, while accessing the "MQL5\Files" folder;

  • ERR_INVALID_PARAMETER (4003)                  – path to the database file contains an empty string, or an incompatible combination of flags is set;

  • ERR_NOT_ENOUGH_MEMORY (4004)              - insufficient memory;

  • ERR_WRONG_FILENAME (5002)                     - wrong database file name;

  • ERR_TOO_LONG_FILENAME (5003)                 - absolute path to the database file exceeds the maximum length;

  • ERR_DATABASE_TOO_MANY_OBJECTS (5122) - exceeded the maximum acceptable number of Database objects;

  • ERR_DATABASE_CONNECT (5123)                  - database connection error;

  • ERR_DATABASE_MISUSE (5621)                      - incorrect use of the SQLite library.

Note

If the filename parameter features NULL or the empty string "", a temporary file is created on the disk. It is automatically deleted after closing the database connection.

If the filename parameter features ":memory:", the database is created in the memory and is automatically deleted after the connection to it is closed.

If the flags parameter features none of the DATABASE_OPEN_READONLY or DATABASE_OPEN_READWRITE flags, the DATABASE_OPEN_READWRITE flag is used.

If the file extension is not specified, ".sqlite" is used.

ENUM_DATABASE_OPEN_FLAGS

ID Description
DATABASE_OPEN_READONLY Read only
DATABASE_OPEN_READWRITE Open for reading and writing
DATABASE_OPEN_CREATE Create the file on a disk if necessary
DATABASE_OPEN_MEMORY Create a database in RAM
DATABASE_OPEN_COMMON The file is in the common folder of all terminals

See also

DatabaseClose