我有一个关于在 Qt 中使用数据库的问题。
在其他语言中,我会做一些事情,比如在主类中创建一个数据库,并将这个数据库的指针传递给其他类以使用。
我一直在玩Qt,似乎如果我在主类中初始化一个数据库,那么我可以在任何其他类中编写和执行一个查询,它将使用这个数据库,我有点困惑,因为似乎有没有参考数据库。
有人可以为我解释一下吗:)
这是在 MainWindow.cpp 中实例化的数据库类
#include "database.h"
Database::Database()
{
Connect();
}
void Database::Connect()
{
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("mydatabase.dat");
if(db.open()){
qDebug() << "Connected";
}
else
{
qDebug() << "Not Connected";
}
}
bool Database::SetupTables()
{
QSqlQuery qry;
qry.exec("CREATE TABLE patients ( patient_id INT, firstname VARCHAR(100), lastname VARCHAR(100) ); ");
return true;
}
这是我创建的一个名为 PatientList 的窗口(小部件)
#include "patientlist.h"
#include "ui_patientlist.h"
#include "database.h"
#include <QtSql>
#include <QtDebug>
PatientList::PatientList(QWidget *parent) :
QWidget(parent),
ui(new Ui::PatientList)
{
ui->setupUi(this);
QSqlQuery qry;
if(qry.exec("SELECT patient_id,firstname,lastname FROM patients")){
qDebug() << "Success";
}
else
{
qDebug() << "Error";
}
}
PatientList::~PatientList()
{
delete ui;
}
这一切都很好,但我只是觉得我做错了什么,因为我没有提到在 MainWindow.cpp 中创建的数据库