当前位置:   article > 正文

如何解决QSqlQuery::exec: database not open_datebase not open

datebase not open

对于初学QT数据库操作的童鞋来说,一定有这么一丢丢的疑问,为何我们从来没有看见QSqlQuery在声明的时候或者实例化的时候与数据库进行关联呢?
实际这是QT系统为我们提供的一个便利,如果我们仅仅只有一个连接,那么系统默认将QSqlQuery关联到了默认的唯一的数据库连接上了。也正因如此,我们遇上了QSqlQuery::exec: database not open的问题。
也正因如此,我们QT中使用combobox与QSqlQueryModel进行数据绑定的时候,下拉框里面没有任何数据。
往往需要通过逐步查找才能够发现问题。出现这样的问题,其根源就是QT的系统默认数据库关联惹的祸。
所以,解决的方法也就是强制指定数据库关联。

解决QSqlQuery::exec: database not open有两个。
1、在query初始化的时候,不适用系统默认的数据库关联,而是强制指定关联数据库,即:
将:QSqlQuery query;
修改为:
QSqlQuery query=QSqlQuery(m_db);
2、在QSqlQueryModel的setquery中强制指定数据库
一般情况我们都默认这样写:
model->setQuery(“select name from class”);
如:
QSqlQueryModel *model=new QSqlQueryModel(this);
model->setQuery(“select name from class”,m_db);

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/699844
推荐阅读
相关标签
  

闽ICP备14008679号