- QSqlQuery::exec: database not open
在使用QSqlQuery和QSqlQueryModel时都碰到了这个问题,只需分别关联到QSqlDatabase即可。
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "localhost");
// 设置相关参数
db.setDatabaseName("irisdb"); // 需要与数据库中的一致
db.setHostName("localhost"); // 主机名(地址)
db.setPort(3306); // 端口
db.setPassword("root");
db.setUserName("root");
db.open();
QSqlQueryModel *model = new QSqlQueryModel(this);
QSqlQuery que(db);//关联db
que.exec("insert into student values(0, 'first')");
model->setQuery("select * from student",db);//关联db
2.在一个项目中同时多次使用
QSqlDatabase::addDatabase("QMYSQL", "localhost");
导致先绑定的model不能显示数据
一个项目最好就使用一个共享的db