数据库模式
数据库结构由一组包含字段(列)和索引的类(表)组成,这些类和索引实现了应用程序的信息模型。
对于 C++ 应用程序,结构是定义好的,并且生成的头文件和实现文件会像 C 应用程序一样被纳入项目中。C++ 应用程序与 C 应用程序使用相同的 DDL 处理器来定义数据库模式。
对于 C++ 应用程序,可以指定 mcocomp
-hpp
或 -cpp
选项,以便除了生成 C 头文件 <db_name>.h
和实现文件 <db_name>.c
之外,还在文件 <db_name>.hpp
中生成 C++封装类实现。请参阅 C++ 快速开始页面了解数据库定义步骤的简要描述,以及数据库定义语言(DDL) 页面了解详细解释。
封装类
C++ API 是围绕 C API 的封装。生成的 C++ 实现文件(<db_name>.hpp
)为模式文件中定义的每个数据库类定义了一个命名空间 <db_name>
和一个 C++ 类。结构编译器可以生成额外的 C++ 类实现,并且该类实现可以选择性地并入 C++ 应用程序。
SQL 类
在 SmartESQL应用程序中,通常优先选择 C++ API 而不是 C API。C++ API 以 McoSqlEngine 类的形式为低级 C SQL API 提供了方便的封装。请参阅 C++ 嵌入式 SQL 要了解 McoSqlEngine 的使用。
编译结构
正如针对 C 应用程序所解释的那样,模式文件由在 SmartEDB 安装的 /host/bin 目录中找到的 mcocomp 实用程序进行编译。
为了生成额外的 C++ 类实现,在调用 mcocomp 时可以指定 -hpp
、-c++
和 -smartptr
选项。
- 当指定
-hpp
或-c++
时,将生成一个额外的<数据库名称>.hpp
文件,其中包含类实现。 - 当指定
-smartptr
选项时,mcocomp 生成的代码能让数据库字段有效地表现为类属性。使得应用程序能够以 C++ 的方式访问对象字段,使用setter
和getter
,而不是使用 C API 的 _put() 和 _get() 函数。
例如:
anObject.aField_get(&value));
anObject.aField_put(1));
使用智能指针,可以编写为:
value = anObject.aField;
anObject.aField = 1;
提示
即使对 SmartEDB 数据库的所有访问都仅通过 SQL 进行,生成的.h
和.c
文件,以及可选的.hpp
文件,也必须包含在 SmartESQL 应用程序中,