排序后如何从sqlite中获取数据?
How to get data from sqlite after sorting?
我再次需要你的帮助。
我想从我的 sqlite 数据库中获取前 3 个值并将它们存储在 QStrings 或 int 中。
我的数据库有 1 个 table,table 有 3 个列(姓名、获胜、失败)。
我想做类似的事情:
QString name1;
QSqlQuery qrry;
qrry.exec("SELECT name FROM users ORDER BY wins DESC WHERE rowid=1");
if (qrry.isActive())
{
while(qrry.next())
{
name1=qrry.value(0).toString();
}
}
如果我删除 ORDER BY wins DESC
,我会从数据库中获取名字。但我想先对它进行排序,ORDER BY
看起来不是正确的方法。
你能帮帮我吗?
正如@hank 所说,您的查询应该是:
qrry.exec("SELECT name FROM users ORDER BY wins DESC LIMIT 3");
LIMIT
子句允许您在结果集中仅获得有限数量的结果。在这种情况下,您只会获得 wins
列的 3 个最大值的 name
值。
你写的 WHERE
子句没有理由在那里。
编辑:
how can I read the names like this: "name1=first name in db", "name2=2nd name", "name3=3rd name" using LIMIT ?
如果你想得到 3 个不同变量中的 3 个名字,你可以这样写:
QString name1, name2, name3;
if (qrry.isActive())
{
int i = 0;
while(qrry.next())
{
switch(i)
{
case 0:
name1 = qrry.value(0).toString();
break;
case 1:
name2 = qrry.value(0).toString();
break;
case 2:
name3 = qrry.value(0).toString();
break;
}
i++;
}
}
这是一种方法,但您也可以将名称放在数组或向量中。在你的情况下,这并不重要,因为你只想要 3 个名字,但如果你想保留超过 10 个或 50 个名字,处理数组或向量会更容易。
LIMIT 3
子句确保您的结果集中最多有 3 个结果,并且您只会在 while(qrry.next())
循环中循环 3 次。
我再次需要你的帮助。 我想从我的 sqlite 数据库中获取前 3 个值并将它们存储在 QStrings 或 int 中。 我的数据库有 1 个 table,table 有 3 个列(姓名、获胜、失败)。 我想做类似的事情:
QString name1;
QSqlQuery qrry;
qrry.exec("SELECT name FROM users ORDER BY wins DESC WHERE rowid=1");
if (qrry.isActive())
{
while(qrry.next())
{
name1=qrry.value(0).toString();
}
}
如果我删除 ORDER BY wins DESC
,我会从数据库中获取名字。但我想先对它进行排序,ORDER BY
看起来不是正确的方法。
你能帮帮我吗?
正如@hank 所说,您的查询应该是:
qrry.exec("SELECT name FROM users ORDER BY wins DESC LIMIT 3");
LIMIT
子句允许您在结果集中仅获得有限数量的结果。在这种情况下,您只会获得 wins
列的 3 个最大值的 name
值。
你写的 WHERE
子句没有理由在那里。
编辑:
how can I read the names like this: "name1=first name in db", "name2=2nd name", "name3=3rd name" using LIMIT ?
如果你想得到 3 个不同变量中的 3 个名字,你可以这样写:
QString name1, name2, name3;
if (qrry.isActive())
{
int i = 0;
while(qrry.next())
{
switch(i)
{
case 0:
name1 = qrry.value(0).toString();
break;
case 1:
name2 = qrry.value(0).toString();
break;
case 2:
name3 = qrry.value(0).toString();
break;
}
i++;
}
}
这是一种方法,但您也可以将名称放在数组或向量中。在你的情况下,这并不重要,因为你只想要 3 个名字,但如果你想保留超过 10 个或 50 个名字,处理数组或向量会更容易。
LIMIT 3
子句确保您的结果集中最多有 3 个结果,并且您只会在 while(qrry.next())
循环中循环 3 次。