McoSqlEngine
McoSqlEngine 是大多数 SmartESQL C++ 应用程序的主类。
McoSqlEngine 的一个实例用于打开并连接到 SmartEDB 数据库、执行 SQL 语句和处理查询结果集,以及执行其他数据库操作。
请查阅嵌入式 SQL 快速入门页面以获取示例。
McoSqlEngine 类不是线程安全的,只能从单个线程访问。为防止不当使用,McoSqlEngine 实例会与创建该实例的线程相关联。
如果从其他线程使用引擎,默认情况下 SQL 运行时会引发异常。
有时应用程序可能会选择在多个线程之间共享引擎。为了防止出现问题(包括可能破坏数据库运行时和数据),正确的应用程序级同步是必要的。在这种情况下,为了避免引发异常,应用程序会使用 grab() 方法,该方法将引擎与当前线程关联起来。或者也可以使用 McoMultithreadedSqlEngine 类。
McoSqlEngine 从基类 SqlEngine 继承了许多方法,同时也提供了以下方法:
McoSqlEngine
默认构造函数McoSqlEngine
()。
McoSqlEngine(McoSqlEngine* engine)
复制构造函数。
open
open(params)
使用 McoSqlOpenParameters 参数打开 SQL 引擎。open(database handle
) 使用 SmartEDB 数据库句柄打开 SQL 引擎以进行 SQL 访问。open(params list
) 使用参数列表打开 SQL 引擎。
executeQuery
executeQuery()
执行带有可变参数列表的 SQL 选择语句。- executeQuery(va_list) 执行带有va_list参数的SQL 选择语句,该参数包含一个参数列表或一个Value参数数组。
executeStatement
executeStatement()
执行带有可变参数列表的 SQL 插入、更新或删除语句。- executeStatement(va_list) 执行带有包含参数列表或值参数数组的
va_list
实参的 SQL 插入、更新或删除语句。
beginTransaction
启动一个数据库事务,并创建一个Transaction实例。
disconnect
disconnect()
断开数据库连接。
close
close()
关闭数据库。
grab
grab()
将此引擎实例与当前线程相关联。
createConnectionPool
createConnectionPool()
创建并行查询执行所需的连接池。
destroyConnectionPool
destroyConnectionPool()
销毁由 createConnectionPool() 创建的连接池。
connectionPoolSize
connectionPoolSize()
返回连接池大小。
registerExternalTables
registerExternalTables(McoSql::Table** tables, size_t n_tables)
注册外部表(位于其他数据库管理系统或文件中的表)。 xSQL 提供了 McoSql::Table 及其他类的开放实现。
save
save(char const *databaseFile)
将数据库映像保存到指定文件中。save(void *stream, mco_stream_write streamWriter)
使用流写入器保存数据库映像。
saveClass
saveClass(char const *filePath, char const *className)
将表内容保存到指定的文件中。
loadClass
loadClass()
从指定的文件加载表内容。
saveMetadata
saveMetadata(char const *metadataFile)
将数据库元数据(兼容xSQL)保存到指定的文件中。saveMetadata(void *stream, mco_stream_write streamWriter)
使用流写入器保存数据库元数据(与xSQL兼容)。
saveDictionary
saveDictionary(char const *dictionaryFile)
将数据库字典保存到指定的文件。saveDictionary(void *stream, mco_stream_write streamWriter)
使用流写入器]保存数据库字典。
backupCreate
执行增量备份。
backupInfo
列出备份文件的内容。
backupRestore
从增量备份还原数据库。
fileBackup
创建磁盘数据库的文件备份(仅适用于持久性数据库)。
checkInterrupted
checkInterrupted()
检查在执行每个 SQL 查询之前被清除的中断选项。 在调用 fileBackup() 时,可能需要使用 setInterrupted() 来设置此选项以管理长时间运行的备份。
setInterrupted
setInterrupted(bool)
设置中断选项,该选项在执行每个 SQL 查询之前会被清除。 在调用 fileBackup() 时,可能需要设置此标志来管理长时间运行的备份。
setFreeMemoryThreshold
setFreeMemoryThreshold(size_t threshold)
设置此阈值会导致内存分配器在可用内存量低于指定阈值时,在当前事务状态中设置错误状态。此阈值使 SmartEDB 运行时在完全没有可用内存的情况下能够执行回滚或恢复操作。
getFreeMemoryThreshold
getFreeMemoryThreshold()
返回当前空闲内存阈值的大小。
getHandle
getHandle()
获取可由 SmartEDB C API 函数使用的数据库句柄。
getLastAutoid
getLastAutoid()
返回最后分配的对象的自动标识符(64 位整数值)。
setTransactionPolicy
setTransactionPolicy(MCO_COMMIT_POLICY policy)
更改当前连接的事务提交策略。
flush
flush()
将已提交事务所做的所有更改刷新到磁盘。当使用 MCO_COMMIT_NO_FLUSH 事务策略时,可以使用此方法将数据库更改保存到磁盘。
getName
getName()
返回数据库名称。
detach
detach()
从操作中分离出来,但不关闭数据库,将其保留在共享内存中。
isDetached
isDetached()
如果调用了 detach()
方法,则返回 true 。
getPageSize
getPageSize()
返回数据库页面大小。
getFreePages
getFreePages()
返回可用的内存页数。
getTotalPages
getTotalPages()
返回内存中的总页数。
getDiskInfo
getDiskInfo()
获取有关磁盘使用情况的信息。
license
license(char * key)
设置许可证密钥(仅适用于受许可证保护的软件包)。 在调用任何 open() 方法之前必须设置许可证密钥。
setInterrupted
setInterrupted(bool enable)
将当前查询标记为”已中断“。可用于实现对长时间运行查询的中断。
DESTROY
DESTROY(McoSqlEngine)
为 SmartESQL C++ 类生成默认的析构函数。