如果用如下方式打开两个数据库,
db = QSqlDatabase::addDatabase(DBType);
db.setDatabaseName(DBfile);
qDebug() << "Open Database file: " << "DBfile";
if(!db.open())
{
qDebug()<<db.lastError();
exit(-1);
}
那么在打开第二个数据库时会产生如下错误
QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.
QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.
在这之后对一个数据库的操作都会被写入到第二个数据库文件中
要解决这个问题,在addDatabase(DBType);函数中必须指定不同的连接名称,
比如在第一个连接时使用如下代码
db.close();
//db.close();
db = QSqlDatabase::addDatabase(DBType,"connectionDB");
qDebug() << "Open Database file: " << DBfile;
db.setDatabaseName(DBfile);
if(!db.open())
{
qDebug()<<db.lastError();
return false;
}
return true;
在第二个连接时使用如下代码:
//db.close();
db = QSqlDatabase::addDatabase(DBType,"connectionUser");
db.setDatabaseName(DBfile);
qDebug() << "Open Database file: " << DBfile;
if(!db.open())
{
qDebug()<<db.lastError();
exit(-1);
}
// check and create table