我在C++项目中使用了Qt库,但我有一个设计问题:应该在哪里声明数据库?我不想声明全局变量。我应该在哪里声明数据库对象
目前我正在用这种方式处理这个问题。我有一个主窗口,我已经在那里声明了数据库,所以我在主窗口中执行查询,并将结果传递给使用不同信号和插槽的对话框。
我在主窗口启动时启动数据库,并在窗口关闭时关闭它。我不知道这是否正确 现在我需要在另一个类的数据库连接以及我可以通过一个参考数据库或使全局数据库
我不喜欢这些解决方案..是否有处理这种情况的标准模式?
编辑:
我班现在看起来像:
class Database
{
public:
bool open(void);
bool close(void);
static Database* getDatabase(void);
// various methods like loadThisTable(), saveThisTable() etc
private:
Database(); // disable constructor
~Database(); // disable destructor
Database(const Database&); // disable copy constructor
Database& operator=(const Database&); // disable assignment
static Database* instance_; // database instance
QSqlDatabase qtDB; // qt db database
}
如果我想我可以添加的添加和删除方法,但我有一个单一的数据库实例。
请说明数据库对象是什么意思?你不使用QtSql的模型类吗? – smitrp 2013-04-04 10:21:04
ps我已经创建了一个类的数据库,类似于:loadThis(),loadThat(),并且在这个类中有qt数据库,所以我没有直接使用qt数据库。如果我使用它,我知道我可以刚刚添加数据库与QSqlDatabase :: addDatabase,并从任何地方使用QSqlDatabase :: database – user2244311 2013-04-04 10:22:12
@SmitPatel我已经为每个物理表创建一个新类 – user2244311 2013-04-04 10:23:37