我正在尝试子类化QSqlTableModel,以便构造函数将设置模型所需的数据库。
我的代码看起来像是:
MyClass::myClass( QObject* parent, QSqlDatabase data )
:QSqlTableModel(parent, data)
{
auto db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory:");
if( !db.open() )
{
//Some debug info
}
if( !database().isOpen() )
{
// Some debug info that is called
}
qDebug() << database().connectionName();
qDebug() << db.connectionName();
}
然后构造函数将输出:
“”
“qt_sql_default_connection”
为什么这两个数据库都没有连接到默认连接?
答案 0 :(得分:1)
警告:如果添加的连接名称与现有连接相同 连接,新连接替换旧连接。如果你这样称呼 函数不止一次而没有指定connectionName,默认值 连接将被替换。
答案 1 :(得分:0)
一旦讨论清除了实际需要的内容,答案就很简单。
在声明中,而不是使用
myClass( QObject* parent = nullptr, QSqlDatabase data = QSqlDatabase::database() );
我只需要使用
myClass( QObject* parent = nullptr, QSqlDatabase data = QSqlDatabase::addDatabase( "QSQLITE" ) );
现在,默认选项是打开SQLite数据库,如果需要,可以提供另一个数据库。
感谢Amartel的富有成效的话题