У меня есть класс, который используется для создания соединения с базой данных:C++: Общий дизайн интерфейса для базы данных
class DBHandler
{
public:
DBHandler();
~DBHandler();
int connect();
int execQuery(string query);
string getField(int row, int col);
};
Теперь есть еще один класс, который используется для извлечения некоторой информации из базы данных,
class DBManager
{
public:
DBManager();
~DBManager();
//Approach 1
string getUsername()
{
//create a query here and use object of DBHandler class to execute it.
}
//Approach 2
string getUsername (struct QueryDetails& qDetails)
{
//create query using fields of structure and execute the query using DBHandler class.
}
};
Теперь вот проблема:
1), какой подход я должен следовать:
- A) Если я использую подход 1, мне нужен жесткий код запроса.
- B) Если я использую подход 2, мне нужно заполнить структуру каждый раз перед вызовом функции getUsername.
2) Есть ли лучшее решение, кроме этих двух, которые были бы общими?
PS: Определение структуры
struct QueryDetails
{
string tableName;
vector<string> colList;
...
};
Да, вы правы, мой класс DBManager - это средний уровень между DBHandler и другим классом, который нуждается в некоторой информации из базы данных. Хотя оба решения специфичны для некоторых точек, я ищу общий интерфейс для того же самого. –
@SonuMaddeshia В этом случае альтернатива 2 является окончательной возможностью для продолжения. – Christophe