Нужно открыть соединение с БД и при этом закрыть старое соединение, если оно было открыто. Написал код - работает, но как-то костылеобразно выглядит ... предложите покрасивее что-то поприятнее на глаз. Соединение всегда открыто только одно.
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() статический, объясните, пожалуйста. Нифига не понятно почему просто методом нельзя сделать