2013-09-26 27 views
2

我是一个新手C++开发人员。C++最佳模式编码数据库元数据信息

我想在C++中用Qt开发一个简单的库,以处理应用程序的配置,例如使用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; 
}; 

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

谢谢。

回答

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; 
};