C++用于管理对数据库的访问的类
C++ class for managing the access to database
这个问题与其说是一个真正的问题,不如说是做问题的最佳方式。
背景和我在做什么
我有一个必须访问数据库的应用程序。因此,我有一个类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文件正在遵循宣布的内容。对我来说,找到函数的位置和维护代码更容易。
再一次,如果遵循你给出的建议不是更相关,我会三思而后行。
再次感谢!
相关文章:
- 使用 Qt5 SQL 进行异步数据库访问的策略
- 根据用户名和密码 Qt C++重新访问数据库值
- 缓存和访问数据库数据的有效方法?
- 可以删除SQLite3数据库文件,并且仍然可以访问
- 没有绝对路径无法访问数据库
- 使用连接器 c++ 访问 MYSQL 数据库(如何将路径添加到我的标准搜索目录)
- 访问数据库-QODBC驱动程序在管理员上执行授予
- 如何从Qt使用密码访问Sqlite数据库
- 如何为数据库设置密码,以便没有人可以访问它
- 如何使用QT/C 中的多线程用API访问我的数据库
- 数据库访问对象设计模式
- SQLite C++多个进程以只读模式访问数据库时"数据库已锁定"
- 仅使用一个用户id和密码访问数据库
- Okcupid.com(无需访问数据库即可查找匹配项!?)
- C++/MySQL - 通过主机地址访问数据库时'Unknown MySQL server host';没有 IP
- 使用线程访问数据库
- 在并行线程中访问数据库,可行的选项
- 无需安装即可访问C++数据库
- Quora和Facebook使用哪些C++库来访问数据库
- 两个函数同时访问数据库