SQL-CPP-Bridge
该框架的目的在于提供将任意的 C ++ / STL 描述的类结构映射到平面 SQL 表格的最简单方法。该框架还提供了读取和写入(同步/异步)、删除和编辑数据的功能,既可以整个容器,也可以是容器的单个元素。目前使用 MacOSX 和 iOS 的 SQLite 实现用于数据存储,但您可以进一步工作适配器,使其与任何类似 SQL 的库兼容。此外,所有形成 SQL 语句的工作都在库内完成,不需要外部干预或任何改进。警告!本软件按现行版本提供,没有任何明示或暗示的保证。在任何情况下,作者都不会因使用本软件而承担任何损害赔偿责任。
如何使用此库
为了使用此库,您需要在项目中添加框架 "sqlcppbridge",并在所需的地方包含文件 sqlcppbridge.h。在 'Cases' 文件夹中提供了几个使用此库的示例。
关键特性
- 支持数据库结构版本。这意味着所有必要的表/索引的支持是自动创建的;如果需要,则调用用于更新表/索引的自定义 SQL 脚本,或者简单地删除并重新创建表(这是您可能需要 SQL 知识的唯一地方);
- 通过字符串键存储基本类型(以下同)算术/枚举/std::string(所谓的 KV 存储);
- 存储可迭代容器,其中包含所有基本类型的值,并在 KV 存储中存储;
- 单个存储库中存储类的实例,其成员包含基本类型,创建所需的索引并对对象的唯一性进行控制;能够将对象加载到任意提供的可迭代的 STL 容器中,以满足任意标准;
- 存储具有任意继承层次结构(包括多重和虚)的类的实例,以及具有任意大小的层次结构本身;
- 存储类的实例,其成员包含其他复合类或基本/复合类型的容器;原则上,这种嵌套没有深度限制。
限制
- 目前不支持可迭代容器的公共继承;
- 也不支持栈、队列(明显不可迭代的)和 forward_list。
构建
您可以使用脚本
./make_framework
创建 ./build/iOS/sqlcppbridge.framework 和 ./build/MacOS/sqlcppbridge.framework,其中包括 armv7、armv7s、armv7k、arm64、arm64e、i386 和 x86_64 架构,可用于整个 iOS 设备和 iOS 模拟器套件。
或者您可以直接运行 'make' 工具来为默认环境创建静态库。
您也可以使用 CMake 构建它(适用于 iOS)
mkdir build.cmake && cd build.cmake
cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/ios.toolchain.cmake -DPLATFORM=OS
有关可用 PLATFORM 选项的更多详细信息,请参阅 https://github.com/leetal/ios-cmake#options
为当前平台构建为 static
库
mkdir build.cmake && cd build.cmake
cmake ..
或者当前平台的共享
库
mkdir build.cmake && cd build.cmake
cmake -DBUILD_SHARED=ON ..
默认情况下,会检测sqlite3库并将其构建成共享库,或者将其指定为静态库版本的要求(见下文)。如果您想避免包含sqlite3(例如,您的项目中已经包含sqlite3),可以使用-DREQUIRE_SQLITE=OFF
选项进行操作
mkdir build.cmake && cd build.cmake
cmake -DREQUIRE_SQLITE=OFF ..
注意 这仅适用于静态库;共享库将强制链接到sqlite3并包含它。
CMake还可以用于轻松集成SQLCppBridge(假设SQLCppBridge作为git子模块使用或放置在lib/SQLCppBridge
中)
add_subdirectory ( "${CMAKE_SOURCE_DIR}/lib/SQLCppBridge" EXCLUDE_FROM_ALL )
...
target_link_libraries (
myTarget
PRIVATE lib::SQLCppBridge
... )
以上示例将自动将myTarget链接到SQLCppBridge,并设置所需的包含目录。
安装
在Linux环境中,使用“sudo make install”将使用'make'工具组装的静态库和头文件放入系统文件夹