Я начинающий 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;
};
Это жизнеспособный выбор? Как инициализировать структуры данных выше?
Благодарю.
Вы можете просто создать структуру, которая содержит всю необходимую информацию о схеме базы данных:
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;
};
Других решений пока нет …