LINUX.ORG.RU

Qt костыль закрытия открытой БД

 ,


0

1

Нужно открыть соединение с БД и при этом закрыть старое соединение, если оно было открыто. Написал код - работает, но как-то костылеобразно выглядит ... предложите покрасивее что-то поприятнее на глаз. Соединение всегда открыто только одно.

void MyWidget::openDatabase(){

    {
	    QString name;
	    {
                  QSqlDatabase db = QSqlDatabase::database();
                  if (db.isOpen()) 
		  { 
           	     db.close(); 
		     name = db.connectionNames()[0];
	             delete model;
                  }
	    }
       QSqlDatabase::removeDatabase(name);
    }

    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");

    db.setDatabaseName("test.sqlite");
    if(!db.open()) {
        QMessageBox::critical(0,QObject::tr("Ошибка"),db.lastError().text());
    }

    model = new QSqlTableModel(this);
    // ...
}

P.S. а почему removeDatabase() статический, объясните, пожалуйста. Нифига не понятно почему просто методом нельзя сделать



Последнее исправление: developer-cpp (всего исправлений: 1)

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.