C++用于管理对数据库的访问的类

C++ class for managing the access to database

本文关键字:访问 数据库 用于 管理 C++      更新时间:2023-10-16

这个问题与其说是一个真正的问题,不如说是做问题的最佳方式

背景和我在做什么

我有一个必须访问数据库的应用程序。因此,我有一个类DatabaseManager,每次我需要访问数据库时都会调用它,例如:

DatabaseManager *db = new DatabaseManager;
std::vector<Element> elementVector = db->getAElementsById(id);

对于所有插入、更新或删除请求,您都是一样的。

最终发生了什么...

。是我的文件已经有 1200 行,并且随着每个新功能的增长而增长。

问题

那么漂亮的人是怎么做的呢?

  • 一个标题几个拆分文件?(这说明这不是一个好主意)
  • 将班级分成几个班级?数据库管理器是一个类,这将是无稽之谈...
  • 还有其他选择吗?(我不熟悉命名空间的概念,也许这是一种方式?

我还阅读了其他帖子,但没有找到可以问谷歌的好问题,也没有找到回答我问题的人。

我将数据库模块拆分为多个文件。 例如,一个文件处理插入,另一个文件处理提取,第三个文件处理搜索。

我的实际上更复杂,但做法应该是将代码拆分为单独的主题文件,最好不超过 300 LOC(代码行)。

我现在选择的解决方案如下(因为我懒得重建新类等等): 我将类拆分为几个 cpp 文件

// DatabaseManager.h
class DatabaseManager
{
//// Getters - in DatabaseManager_getters.cpp
public:
    // Movies
    Movie getOneMovieById(const int id);
    QList<Movie> getAllMovies(const QString fieldOrder = "title");
    ....
private:
    // Other functions for getters
    Movie hydrateMovie(QSqlQuery &query);
//// Inserts - in DatabaseManager_insert.cpp
public:
    bool insertNewMovie(Movie &movie);
    ....
private:
    bool insertNewTag(Tag &tag);
    ....
//// Updates - in DatabaseManager_update.cpp
public:
    bool updateMovie(Movie &movie);
    ....
//// Delete - in DatabaseManager_delete.cpp
public:
    bool deleteMovie(Movie &movie);
private:
    bool deletePeople(const People &people);
};

显然,.cpp文件正在遵循宣布的内容。对我来说,找到函数的位置和维护代码更容易。

再一次,如果遵循你给出的建议不是更相关,我会三思而后行。

再次感谢!