Так вот в чем косяк, close() у меня есть:
void MainWindowImpl::OnNewDb()
{
// TODO
if(db.isOpen())
{
db.close();
}
filename=QFileDialog::getSaveFileName(0,QString::fromUtf8("Выберите файл для новой БД."),"","*.*");
QFile file(filename);
if(file.exists())
{
if(!file.remove())
{
QMessageBox::critical(0, QString::fromUtf8("Не могу удалить старый файл..."),QString::fromUtf8("Не могу удалить старый файл..."));
}
}
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(filename);
if (!db.open())
QMessageBox::critical(0, QObject::tr("DataBase Error"),db.lastError().text());
И, тем не менее, не получается. Отладчик выдаёт мне вот это:
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.
QSqlQuery::exec: database not open