Qt开发,链接了数据库后,调用QSqlQuery::setQuery执行SQL语句获取我们想要的数据
来源:互联网 发布:战舰世界数据更新出错 编辑:程序博客网 时间:2024/05/16 01:01
继上篇文章将数据库封装成一个类,链接为成员函数,而当我将查询做为另一个函数时,无法对已有的database进行操作,尽管db为类的成员,同样会报错误:QSqlQuery:exec: database not open
QSqlQueryModel* SqlClass::OpenDatabase(){ db = &QSqlDatabase::addDatabase("QODBC","xxx"); if( !db->isValid() ) { qDebug() << db->lastError().text(); } db->setHostName(); db->setDatabaseName(); db->setUserName(); db->setPassword(); if(!db->open()) { } else { } QSqlQueryMode *QueryModel; QueryModel = new QSqlQueryModel(); QueryModel->setQuery(tr(""),*db); return QueryModel;}
这里将model传出来,可调用QTableView->setModel(QueryModel);去讲数据提取。
关于SqlClass,本身就有db成员,为什么当我们setQuery语句不加入*db,即使跟db的创建放在同个函数里同样都有问题。这里已经违背了连接数据库跟操作数据库分开的初衷。
继续加油解决。
```````````````````````````````````````````````````````````````````OK
这里对问题重新理清了下思路,将数据库操作分开写在其他函数是可行的,而我原本的函数代码是这样的:
QSqlQueryModel* SqlClass::query_mod_cat(){ if( !db->open() ){ qDebug()<<"Cannot connect to database."; return NULL; } QSqlQueryModel* query_model = new QSqlQueryModel(); query_model->setQuery(tr("SELECT * FROM xxx"),db); return query_model;}
出问题的点在于:
void QSqlQueryModel::setQuery(const QString &query,const QSqlDatabase &db = QSqlDatabase() )
这是setQuery的原型,所以一开始的思路是对的,给该query语句制定db,但是这里最大的问题不知道各位看出来了没。
我们需要传递的db类型是 const QSqlDatabase &db.
所以我在setQuery前加了:
const QSqlDatabase &database = *db;
然后再把我们的database传入:
query_model->setQuery(tr("SELECT * FROM xxx"),database);
这样就实现了链接跟操作分离,接下来我们传出的是model,比如想将其以table的形式展现出来:
QTabelView* Table_Select = new QTableView();Table_Select->setModel(query_model);Table_Select->show();
0 0
- Qt开发,链接了数据库后,调用QSqlQuery::setQuery执行SQL语句获取我们想要的数据
- 十五、Qt数据库 之 利用QSqlQuery类执行SQL语句
- Qt数据库 利用QSqlQuery类执行SQL语句
- qt之QSqlQuery类执行SQL语句
- Qt数据库(三)利用QSqlQuery类执行SQL语句(一)
- Qt数据库(四)利用QSqlQuery类执行SQL语句(二)
- Qt数据库(四)利用QSqlQuery类执行SQL语句(二)
- [Qt教程] 第23篇 数据库(三)利用QSqlQuery类执行SQL语句
- Qt数据库:(三)利用QSqlQuery类执行SQL语句(一)
- Qt数据库:(四)利用QSqlQuery类执行SQL语句(二)
- QT之利用QSqlQuery类执行SQL语句
- 关于Qt使用QSqlQuery执行sql语句时出现out of memory的问题
- QSqlQuery执行多条Sql语句的方法
- QSqlQuery exec执行SQL语句失败
- QT数据库QSqlQuery---Qt
- 加载驱动链接数据库执行SQL语句
- QT数据库QSqlQuery
- QT数据库操作QSqlQuery
- P051第十题
- Java Map按键(Key)排序和按值(Value)排序
- plist解析工具:Anti_TexturePacker
- 快速处理静态数据
- android开发之常用OAuth登录与分享详解
- Qt开发,链接了数据库后,调用QSqlQuery::setQuery执行SQL语句获取我们想要的数据
- Spring源码解析
- ThreadLocal源码解析
- The first mainland city firm H-share listing Chongqing bank do poineering work the two times to crea
- 实验一
- iOS_Application
- 第4周项目1-三角形类的构造函数(2)-默认构造函数
- 滕王阁序
- XCode6 生成prefix.pch文件