SmartESQL
最初,SmartESQL 以一组紧凑的 C++ 类的形式实现,旨在为 SmartEDB 数据库提供 SQL 访问功能。其 C API 主要由低级别的 C 函数构成,这些函数实际上是上述 C++ 类的轻量级封装。C 函数的具体应用方法可以在 SQL C SDK 示例中找到。
在嵌入式 SQL 应用程序开发过程中,与所有 C 和 C++ 应用程序相同。首先使用 SmartEDB DDL 定义数据库模式,然后通过 mcocomp 编译该模式。
运行时库
提供用于嵌入式“本地”和“远程” SQL 数据库支持的库。所有使用 C API 的应用程序都需要以下库:mcosql.lib
。
启动SQL引擎
应用程序启动时,将调用静态 C API 函数初始化 SmartEDB 运行时环境,并设置内存设备及数据库参数。随后,通过调用 mco_db_open_dev()
打开数据库,并通过 mco_db_connect()
建立数据库连接。接下来,将此数据库连接(句柄)传递给 SmartESQL 函数 mcoapi_initialize()
以初始化 SQL 封装器。最后,通过调用 mcosql_open()
启动 SQL 引擎。
此 SQL 引擎结构用于通过 mcosql_execute_query()
和 mcosql_execute_statement()
函数执行所有 SQL 数据库访问操作。
处理 SQL 查询
在处理查询结果时,C 语言中的结构体 data_source_t
、cursor_t
和 record_t
发挥着关键作用。
通常情况下,data_source_t
的地址会与 SELECT 语句一同传递给函数 mcosql_execute_query()
以获取结果集。随后,通过调用 mcosql_get_cursor()
函数创建一个 cursor_t
实例,用于遍历该结果集(即数据源)。
为了定位游标,可以使用函数 mcosql_move_first()
、mcosql_move_next()
、mcosql_move_last()
和 mcosql_move_prev()
,并通过获取当前结果集行的 record_t
句柄来访问具体记录。
此外,利用函数 mcosql_get_column_value()
可以访问结果集行(即记录)中的各个列值。当所有操作完成后,必须调用 mcosql_release_query_result()
函数释放为此次 data_source_t
分配的动态内存资源。
执行 SQL 语句
SQL 引擎结构通过带有插入、更新或删除语句的 mcosql_execute_statement()
函数传递,以修改数据库内容。提供了多个参数替换说明符来构造 SQL 语句。
预处理语句
SQL语句可以预先编译并多次重复使用。
通过省去每次执行时的编译步骤,这一过程能够有效节省处理器时间。更值得注意的是,预编译步骤只需一次性绑定语句参数,随后在后续调用中重复利用这些参数。这带来了显著的性能提升,因为与mcosql_execute_query()
和mcosql_execute_statement()
函数不同,mcosql_prepare_statement()
仅处理参数的指针。因此,在预编译阶段绑定参数值,使得mcosql_execute_prepared_query()
或mcosql_execute_prepared_statement()
函数可以直接使用这些参数的实际值。
相关API
主题 | 说明 |
---|---|
运行时初始化 | SmartESQL 运行时初始化 |
引擎初始化 | SQL 引擎初始化 |
查询 | 执行数据库查询 |
执行语句 | 执行其他 SQL 语句 |
预处理语句 | 执行预处理语句 |
参数替换 | SQL 语句参数替换 |
事务管理 | 管理数据库事务 |
元数据 | 保存数据库元数据 |
混合语言 | 将 C 语言 API 与 C++ 混合使用 |
返回代码 | SQL特定的返回代码 |