2

我是新手 C++ 开发人员。

我想用 Qt 在 C++ 中开发一个简单的库来处理应用程序的配置,例如使用 SQLite 数据库,模拟 KEY、VALUE 访问。

实际上,我将 SQLite3 与下表一起使用:

Component (ID <int>, Name <string>)
Keys ( COMPONENT_ID <int>, NAME <string>, Type <string>, Value <string>)

库应该有方法来获取和放入配置中的键、值对。

为了简化事情,我使用了 Qt::QSqlRelationalTableModel。

这需要将一些表和列名称作为字符串传递。

定义这些数据库元数据的正确方法是什么?

我想避免使用宏或简单的常量,例如在主类中使用静态结构。

例如像下面这样的解决方案:

class ConfigurationHandler()
{
  enum ConfigurationTable { COMPONENT_ID, COMPONENT_NAME };
  enum Key_Table { KEY_COMPONENT, KEY_NAME, KEY_TYPE, KEY_VALUE}
  struct ConfigurationTable {
  {
     QString tableName;
     vector<string>;
  }

  static const ConfigurationTable component;
  static const ConfigurationTable keys;
};

这是一个可行的选择吗?如何初始化上面的数据结构?

谢谢。

4

1 回答 1

0

您可以创建一个结构,其中包含有关数据库模式的所有所需信息:

class DatabaseSchema {
public:
  QString component_table, component_id_field, component_name_field;
  QString keys_table, keys_component_id_field, keys_name_field /*...*/ ;
};

class DatabaseOperations {
public:
 /*...*/
  void set_schema(const DatabaseSchema& schema);

private:
  DatabaseSchema schema;
};
于 2013-09-26T10:45:05.433 回答