在Qt-creator中,我在一个名为databaseManager的类中创建了SQLite数据库,如下所示:
QString DatabaseManager::open_db()
{
QSqlDatabase db;
QString path = "/Users/me/Documents/workspace/Muasaa/";
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(path+"Database v.1");
if (db.open()){
return "Database is created, open, and ready ...";
} else {
return db.lastError().text();
}
}
然后我在MainWindow类的头文件中定义以下内容:
Public:
DatabaseManager *db_manager;
在源文件中,我将其称为:
db_manager->open_db();
创建并打开数据库。
但是,我想使用对同一数据库的引用在MainWindow源文件中的许多函数中使用它。我怎么能这样做?!
答案 0 :(得分:0)
将QSqlDatabase db
变量移动到类标题中,并添加获取它的方法。只要您创建databaseManager
类的实例并在MainWindow
中维护指向它的指针,您就可以检索它。
答案 1 :(得分:0)
QSqlDatabase :: database()是一个返回QSqlDatabase的静态函数。 如果您有多个数据库,则必须在addDatabase()和database()中提供连接名称
答案 2 :(得分:0)
也许设计解决方案可能有所帮助?
无论您的目标是什么,请考虑将您的DatabaseManager类转换为Singleton。通过这种方式,您可以在所有gui课程中使用您的经理。像DatabaseManager::instance()->your_method()
优点:
您确定以正确的方式管理连接
构建问题的机会减少
顺便说一句,我不确定,但程序崩溃可能是因为在初始化之前使用db_manager指针,可能在插槽中,或者(更有可能)它是内部的连接错误。您是否在最小可能示例中检查了相同的连接属性?