注册 登录
编程论坛 C++教室

谁能帮我看看!

a111234567 发布于 7 天前 00:38, 107 次点击
    QSqlQuery sql(m_db);
    sql.exec("select count(id) from student");
    quint32 uiCnt=0;
    while(sql.next())
    {
        uiCnt=sql.value(0).toUInt();
        qDebug()<<uiCnt;
    }

计数不同吗?sql.value(0).toUInt();不是返回id的数值吗?
谁能帮我看看!
3 回复
#2
rjsp7 天前 14:08
不是返回id的数吗?
不是返回id的数吗?

回正题,你的问题是什么?即,实际输出什么,你期待输出什么?
#3
a1112345677 天前 15:04
回复 2楼 rjsp
实际返回的是student表的记录的计数。我期待的是表的最后一条的id。
#4
yiyanxiyin7 天前 18:37
谁说你的代码不正确, 可以说你的代码是教科书式的代码, 只是一般人掌握不了代码的精髓, 这代码对数据是有要求的,要求id为从1开始的连续自然数, 不是任何阿猫阿狗都能用的, 必须深入理解自然数和连续,  高深的代码, 让运维有足够的发挥空间, 这就是经典.
下面的代码就不是很好, 可以让运维成为小白:
QSqlQuery sql(m_db);
    sql.exec("select id from student");
    quint32 uiCnt=0;
    while(sql.next())
    {
        uiCnt=sql.value(0).toUInt();
    }
qDebug()<<uiCnt;

下面的代码,更烂,让运维彻底失业:

 QSqlQuery sql(m_db);
    sql.exec("select max(id) from student");
    quint32 uiCnt=0;
    while(sql.next())
    {
        uiCnt=sql.value(0).toUInt();
    }
qDebug()<<uiCnt;

[此贴子已经被作者于2024-11-15 14:09编辑过]

1