gpt4 book ai didi

mysql - QSqlRecord : Access numeric value from SQLite Table in QT, 结果为空

转载 作者:行者123 更新时间:2023-11-29 10:38:07 25 4
gpt4 key购买 nike

我遇到的问题与我见过的一些问题类似,但解决方案似乎不适合我,所以我将添加一个新问题:

我正在尝试使用以下查询将 SQLite 表中的数值(最高用户 ID)访问到我的 QT 程序中:

SELECT Name, MAX(ID) FROM User_lib;

这可以在命令 shell 中运行,并获得预期的结果。

然后我尝试使用以下方法访问最大 ID 值:

QSqlQuery qry_ID;    
qry_ID.prepare("SELECT Name, MAX(User_lib.ID) FROM User_lib");
qry_ID.exec()
qDebug() << qry_ID.record().value("ID").toInt();

结果为零(如果我使用 toString() 访问“Name”,则结果为空)

另外,作为测试

qDebug() << "Number of Rows: " << qry_ID.size();

我在其他几个答案中看到的结果给了我-1。另一方面,

qDebug() << "Number of columns: " << qry_ID.record().count();

按预期给出了“列数 2”。该查询似乎没有给出任何结果。

起初我以为我的查​​询有问题,但是当我尝试计算显然正常工作的查询中的行数时,会发生同样的事情(显示表格,我可以正确添加元素等),所以我想我一定是在 QT 中做错了什么。

最佳答案

让我们看看在命令行 shell 中实际得到了什么:

sqlite> .mode columnssqlite> .header onsqlite> SELECT Name, MAX(ID) FROM User_lib;Name        MAX(ID)----------  ----------user30248   8562493

因此,在从查询获得的输出中,第二列的名称不是 ID,而是 MAX(ID)

documentation实际上说:

The name of a result column is the value of the "AS" clause for that column, if there is an AS clause. If there is no AS clause then the name of the column is unspecified and may change from one release of SQLite to the next.

因此请使用 AS,或通过索引访问该列。

<小时/>

SQLite 根据需要计算输出行,因此在全部读取行之前不可能给出行数。因此,the QuerySize feature SQLite 驱动程序不支持。

关于mysql - QSqlRecord : Access numeric value from SQLite Table in QT, 结果为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46051024/

25 4 0