C ++编写数据库元数据信息的最佳模式

时间:2013-09-26 10:34:25

标签: c++ qt qtsql

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

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

实际上我使用SQLite3和以下表格:

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

库应具有获取和配置Key,Value对的方法。

为了简化我正在使用的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;
};

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

感谢。

1 个答案:

答案 0 :(得分: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;
};