找回密码
 立即注册
收起左侧

QSqlRelationalTableModel使用MYSQL的limit会报错

9
回复
9313
查看
[复制链接]
累计签到:114 天
连续签到:1 天
来源: 2013-10-15 16:52:21 显示全部楼层 |阅读模式
5Qter豆
本帖最后由 Marvelous 于 2013-10-15 17:09 编辑

以快速入门书上代码的17-8作为例子
在mainwindow.cpp里更改


QSqlRelationalTableModel *model = new QSqlRelationalTableModel(this);  
model->setTable("student");   
model->setRelation(2, QSqlRelation("course", "id", "name"));   
model->setFilter(" limit 1,1");//增加这行代码就出错了!  
model->select();    QTableView *view = new QTableView(this);  
view->setModel(model);  
setCentralWidget(view);   

view->setItemDelegate(new QSqlRelationalDelegate(view));


百度上没相关资料  google上面有 可怜我的英文太差了 看不懂- - 惭愧啊



最佳答案

查看完整内容

你测试一下,看换成别的Filter,别用limit,是否出错? 试试在普通的tableModel中使用limit是否出错? 使用其他数据库,比如sqlite,看看是否出差? 试完以后得出结论,看到底是哪里的问题!
回复

使用道具 举报

累计签到:1569 天
连续签到:1 天
2013-10-15 16:52:22 显示全部楼层
你测试一下,看换成别的Filter,别用limit,是否出错?

试试在普通的tableModel中使用limit是否出错?

使用其他数据库,比如sqlite,看看是否出差?


试完以后得出结论,看到底是哪里的问题!

回复

使用道具 举报

累计签到:114 天
连续签到:1 天
2013-10-15 21:34:25 显示全部楼层
因为是多表联查  其他Filter需要加上表名 如BB.ID=123 加上了就不会出错但是limit不知道怎么加

tablemodel不会出错 因为是单表
sqlite也是一样的情况

我查了下谷歌 外国友人好像说是需要继承QSqlRelationalTableModel重写   可惜我英语水平有限 看不太懂
回复

使用道具 举报

累计签到:894 天
连续签到:1 天
2013-10-15 21:52:28 显示全部楼层
Marvelous 发表于 2013-10-15 21:34
因为是多表联查  其他Filter需要加上表名 如BB.ID=123 加上了就不会出错但是limit不知道怎么加

tablemodel ...

我说一个和这个无关的话,用火狐或者谷歌浏览器吧,强大的插件功能,使用很方便,我用的就是火狐浏览器,比如翻译整个网页。
回复

使用道具 举报

累计签到:114 天
连续签到:1 天
2013-10-16 07:52:40 显示全部楼层
yafeilinux 发表于 2013-10-15 19:22
你测试一下,看换成别的Filter,别用limit,是否出错?

试试在普通的tableModel中使用limit是否出错?


因为是多表联查  其他Filter需要加上表名 如BB.ID=123 加上了就不会出错但是limit不知道怎么加

tablemodel不会出错 因为是单表
sqlite也是一样的情况

我查了下谷歌 外国友人好像说是需要继承QSqlRelationalTableModel重写   可惜我英语水平有限 看不太懂
回复

使用道具 举报

累计签到:114 天
连续签到:1 天
2013-10-16 07:53:48 显示全部楼层
Syylc120317 发表于 2013-10-15 21:52
我说一个和这个无关的话,用火狐或者谷歌浏览器吧,强大的插件功能,使用很方便,我用的就是火狐浏览器, ...

机器翻译出来的简直不忍直视
回复

使用道具 举报

累计签到:1569 天
连续签到:1 天
2013-10-16 22:21:26 显示全部楼层
Marvelous 发表于 2013-10-16 07:52
因为是多表联查  其他Filter需要加上表名 如BB.ID=123 加上了就不会出错但是limit不知道怎么加

tablemo ...

找到问题了就需要想解决办法,如果不重写那个类,

看看要实现什么效果,是否可以用其他方式代替。
回复

使用道具 举报

累计签到:894 天
连续签到:1 天
2013-10-17 07:08:54 显示全部楼层
Marvelous 发表于 2013-10-16 07:53
机器翻译出来的简直不忍直视

嗯,机器的翻译虽然不如人工翻译的准确,但是至少能看到大概是什么个中文意思。
回复

使用道具 举报

累计签到:114 天
连续签到:1 天
2013-10-17 08:36:08 显示全部楼层
yafeilinux 发表于 2013-10-16 22:21
找到问题了就需要想解决办法,如果不重写那个类,

看看要实现什么效果,是否可以用其他方式代替。 ...

好像是mysql本身就不支持联表查询时使用limit  网上的资料说的是需要再加一个子查询
QSqlRelationalTableModel 不能使用sql查询 使用的是表
所以我尝试了QSqlQueryModel 这个是可以解决问题的 但是我想使用TableModel里的setFilter所以我放弃了QueryModel

我目前的解决方法是 使用Mysql的视图 把几个表关联在一起  在QT中使用QSqlTableModel查询单个View 这样就可以使用setFilter 使用limit 也可以实现多表联查的效果了
回复

使用道具 举报

累计签到:114 天
连续签到:1 天
2013-10-17 08:36:45 显示全部楼层
Syylc120317 发表于 2013-10-17 07:08
嗯,机器的翻译虽然不如人工翻译的准确,但是至少能看到大概是什么个中文意思。 ...

作为一个英语专业的  我很惭愧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了