我正在编写一个需要数据库的c ++程序,而我正在使用SQLite。我有一个函数createTables()
,它在我的数据库中创建表。但真正困扰我的程序部分是每次我的程序启动时都必须调用createTables()
。虽然用于创建表的SQL查询是这样的:
CREATE TABLE IF NOT EXISTS table_name
但我想知道是否可以在不使用if
或其他条件语句的情况下运行一部分代码。我可以自行更改程序工作流程吗?程序能改变吗?
例如,假设原始代码是:
createTables();
otherPartOfProgram();
但下次(假设表在上一次运行中成功创建)程序自行更改,工作流程如下:
otherPartOfProgram();
答案 0 :(得分:3)
这不能直接完成。您可以在程序(配置文件,注册表...)之外存储表创建表的事实,或者更改createTables
函数,以便在尝试之前测试它们是否存在创造它们。
但是,更简单的方法是将表作为运行程序的先决条件。有一些外部代码创建它们。
答案 1 :(得分:2)
标准库有一个解决方案,虽然它不适合您的情况:
#include <mutex>
std::once_flag flag;
void f(); // to be called once
void main_function()
{
std::call_once(flag, f);
// ...
}