隐藏英雄 发表于 2023-1-20 02:00

QT读写sqlite数据库 的问题

本帖最后由 隐藏英雄 于 2023-1-20 10:16 编辑


我试着这样写了 但是不能输出,至于第二段我更是不会了!
https://wwot.lanzouw.com/iKK3t0lg361i
数据库文件已上传蓝奏
    int col1 = rec.indexOf("data");
    sql.exec("seledct * tablenamewhere num<>0order by num DESC");
    while(sql.next())
    {
      qDebug() << sql.value(col1).toString();
    }

btc001 发表于 2023-1-20 09:32

query.exec("SELECT * FROM tablename where num<>0 order by num DESC;");
while(query.next())
{
    QString data = query.value(2).toString();

    qDebug()<<data;
}

query.exec("SELECT * FROM tablename WHERE dataid IN(SELECT dataid FROM tablename GROUP BY dataid HAVING COUNT(dataid)>1);");
while(query.next())
{
    QString data = query.value(2).toString();

    qDebug()<<data;
}

btc001 发表于 2023-1-20 08:21

select * from tablename WHERE dataid IN(SELECT dataid FROM tablename GROUP BY dataid HAVING COUNT(dataid)>1)

你这段代码是错误的
sql.exec("seledct * tablenamewhere num<>0order by num DESC"); 应该是select

隐藏英雄 发表于 2023-1-20 09:22

本帖最后由 隐藏英雄 于 2023-1-20 09:26 编辑

btc001 发表于 2023-1-20 08:21
select * from tablename WHERE dataid IN(SELECT dataid FROM tablename GROUP BY...
大佬你可能不知道我的水平,发个图片你就懂了。。。可以帮我完善一下以下代码 达到我说的效果吗谢谢了{:301_1008:}
    }


按num 从大到小的顺序 输出data里的字段,,num为0的不输出

    int col1 = rec.indexOf("data");
sql.exec("select * tablename where num<>0 order by num DESC");
    while(sql.next())
    {
      qDebug() << sql.value(col1).toString();
    }

按照dataid 的值相同的为一组,   按组分别输出每组的data里的字段

    int col2 = rec.indexOf("data");
    sql.exec("select * from tablename WHERE dataid IN(SELECT dataid FROM tablename GROUP BY dataid HAVING COUNT(dataid)>1");
    while(sql.next())
    {
      qDebug() << sql.value(col2).toString();
    }

隐藏英雄 发表于 2023-1-20 09:47

btc001 发表于 2023-1-20 09:32
query.exec("SELECT * FROM tablename where num0 order by num DESC;");
while(qu ...

BY dataid HAVING COUNT(dataid)>1)
sql.value(2)
num<>0
rec.indexOf("data");

大佬上面这4句 我不懂它的意思,可以教教我怎么解释它们吗谢谢了

songwei1984 发表于 2023-1-20 09:49

看来论坛里面学Qt的人比较多呢。

btc001 发表于 2023-1-20 09:56

隐藏英雄 发表于 2023-1-20 09:47
BY dataid HAVING COUNT(dataid)>1)
sql.value(2)
num0


先执行sql语句query.exec
然后循环执行 while
每执行一次该函数,便指向相邻的下一条记录query.next()
取data----query.value(2).toString();   0是id字段 1是num字段 2是data字段 4是dataid字段

隐藏英雄 发表于 2023-1-20 10:26

btc001 发表于 2023-1-20 09:56
先执行sql语句query.exec
然后循环执行 while
每执行一次该函数,便指向相邻的下一条记录query.next()


这段代码是筛选了dataid相同的数据 然后 全部依次输出了,如果只要dataid为 2 的数据的话 要怎么改一下呢
    sql.exec("SELECT * FROM tablename WHERE dataid IN(SELECT dataid FROM tablename GROUP BY dataid HAVING COUNT(dataid)>1);");
    while(sql.next())
    {
      QString data = sql.value(2).toString();

      qDebug()<<data;
    }

btc001 发表于 2023-1-20 11:02

隐藏英雄 发表于 2023-1-20 10:26
这段代码是筛选了dataid相同的数据 然后 全部依次输出了,如果只要dataid为 2 的数据的话 要怎么改一下 ...

uery.exec("SELECT * FROM tablename where dataid=2;");
while(query.next())
{
    QString data = query.value(2).toString();

    qDebug()<<data;
}

psvajaz 发表于 2023-1-20 11:29

sql语句都错了
页: [1] 2
查看完整版本: QT读写sqlite数据库 的问题