用qt开发 sqlite3,sql语句不支持 with as吗

boylafong 2017-09-07 10:56:23
用qt连接sqlite数据库,语句基本如下

with xx as(select * from test)select * from xx,

在 sqlite expert中查询是可以的,但是在QT里面执行不可以(执行 select * from test可以)

什么原因?



...全文
1473 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
骚年的祖先 2019-05-23
  • 打赏
  • 举报
回复
引用 2 楼 donwmufromdying 的回复:
我用的Qt 5.8
大哥,我的5.11为什么不行?
donwmufromdying 2017-09-14
  • 打赏
  • 举报
回复
我用的Qt 5.8
donwmufromdying 2017-09-12
  • 打赏
  • 举报
回复
我没啥问题啊.
#include <QCoreApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QtDebug>
#include <QSqlRecord>
#include <QSqlField>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "memory");
    db.setDatabaseName(":memory:");
    if ( db.open() ) {
        qDebug()<<"open database succeeded";
        QSqlQuery query(db);
        if ( query.exec("create table testme(id int, name varchar(32));") ) {
            qDebug()<<"Create table succeeded";
            query.exec("insert into testme values(1, \'aaa\');");
            query.exec("insert into testme values(2, \'bbb\');");

            query.exec("select * from testme;");
            while(query.next()) {
                qDebug()<<"id="<<query.record().field("id").value().toInt()<<",name="<<query.record().field("name").value().toString();
            }

            query.exec("with xx as (select id,name from testme)select * from xx;");
            qDebug()<<"with clause";
            while(query.next()) {
                qDebug()<<"id="<<query.record().field("id").value().toInt()<<",name="<<query.record().field("name").value().toString();
            }

        }
        else {
            qDebug()<<"Create table failed";
        }
    }

    return a.exec();
}
结果: open database succeeded Create table succeeded id= 1 ,name= "aaa" id= 2 ,name= "bbb" with clause id= 1 ,name= "aaa" id= 2 ,name= "bbb"
懒懒的吉他手 2017-09-12
  • 打赏
  • 举报
回复
测试了一下8楼哥们的代码是OK的,Qt5.8.0
boylafong 2017-09-12
  • 打赏
  • 举报
回复
手机不能引用帖子吗?
楼上大哥你用的什么QT版本?我5.0
boylafong 2017-09-11
  • 打赏
  • 举报
回复
语句查看了N遍没问题,还用来在数据库里执行都没问题
boylafong 2017-09-11
  • 打赏
  • 举报
回复
引用 5 楼 qazaq408 的回复:
[quote=引用 4 楼 boylafong 的回复:] 语句查看了N遍没问题,还用来在数据库里执行都没问题
这个语句在命令行能执行成功么?[/quote] 在命令行可以执行
boylafong 2017-09-11
  • 打赏
  • 举报
回复
在命令行可以执行
加盾男爵 2017-09-11
  • 打赏
  • 举报
回复
引用 4 楼 boylafong 的回复:
语句查看了N遍没问题,还用来在数据库里执行都没问题
这个语句在命令行能执行成功么?
Acuity. 2017-09-10
  • 打赏
  • 举报
回复
目前还没用过with as语句,qt只是将sqlite封装下加上自己的函数接口而已,难道是bug?理论上都支持的,还是检查下语句有没有问题吧。
boylafong 2017-09-10
  • 打赏
  • 举报
回复
有朋友帮看下吗
boylafong 2017-09-07
  • 打赏
  • 举报
回复
错误提示 Query Error: near “with”: syntax error Unable to execute statement

16,173

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧